D'un côté, on me dit que les exceptions en C# sont "coûteuses", mais de l'autre, je ne sais pas comment les mettre en œuvre.
Mon problème est le suivant : Je suis en train de faire un Stream
dérivé, qui enveloppe un NetworkStream
. Maintenant, le problème auquel je suis confronté est le suivant : Read(byte[] buffer, int offset, int count)
. De la Stream
pour cette fonction :
Les retours :
... ou zéro (0) si la fin du flux a été atteinte.
Le problème est que, dans le protocole que j'implémente, le côté distant peut envoyer un jeton "end of record" ou un jeton "please respond". De toute évidence, si cela se produit au début de l'enregistrement de l'utilisateur, il n'y aura pas de réponse. Read()
cela pose des problèmes, car je dois retourner de la fonction, et je n'ai rien lu, donc je dois retourner 0, ce qui signifie que le flux est terminé, mais il ne l'est pas... est un EndOfRecordException
ou similaire justifié dans ce cas ? Et dans ce cas, devrait-il toujours être levé lorsque ce jeton est rencontré (au début de l'écran de l'utilisateur) ? Read()
et s'assurer que ces jetons sont toujours au début en retournant tôt) afin qu'il y ait une sorte de modèle sur la façon dont ces jetons doivent être traités.
Edit : Pour ce que ça vaut, ces jetons passent généralement de 3 à 10 fois par seconde. Au maximum, je ne m'attendrais pas à plus de 25 par seconde.