Je reçois l'exception suivante:Existe-t-il une alternative à System.IO.BufferedStream en C#?
System.NotSupportedException : This stream does not support seek operations.
at System.Net.Sockets.NetworkStream.Seek(Int64 offset, SeekOrigin origin)
at System.IO.BufferedStream.FlushRead()
at System.IO.BufferedStream.WriteByte(Byte value)
Le spectacle de lien de suivi que ce problème est connu pour Microsoft. http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=273186
Ce stacktrace spectacle 2 choses:
- Le System.IO.BufferedStream faire une opération de déplacement de pointeur absurde. Un BufferedStream doit mettre en tampon le flux sous-jacent et pas plus. La qualité du tampon sera mauvaise s'il y a une telle opération de recherche.
- Il ne fonctionnera jamais stable avec un flux qui ne supporte pas Seek.
Y a-t-il des alternatives? Ai-je besoin d'un tampon avec un NetworkStream en C# ou est-ce déjà tamponné?
Modifier: Je veux simplement réduire le nombre d'appels en lecture/écriture dans le flux de socket sous-jacent.
Avez-vous effectué la recherche ou est-ce que cela s'est produit suite à une opération d'écriture? –
Comment vous voyez dans le stacktrace que j'appelle seulement WriteByte(). Le problème est qu'il y a des données dans le tampon de lecture au moment de l'opération d'écriture. – Horcrux7
Vous avez raison - je n'ai pas lu la trace tout le chemin. –