При чтении C# NetworkStream
(из TCP-сокета потокового типа) BinaryReader.ReadChar
иногда выдает исключения System.ArgumentException: The output char buffer is too small to contain the decoded characters, encoding 'Unicode (UTF-8)'
Все буферы имеют свои размеры по умолчанию (ни один из них не устанавливается вручную), и установка большего размера буфера не влияет на проблему.
И что совсем обескураживает:
Исключение не возникает при использовании точки останова и пошаговом обходе строки с вызовом
ReadChar
Исключение не возникает, если
ReadChar
предшествуетThread.Sleep(1000)
(но все же может возникать с меньшими тайм-аутами).Исключение не возникает при использовании
BinaryReader
наFileStream
, где хранятся все точные байты ответа TCP-сервера.
Итак, в чем может быть проблема, связанная со временем, при буферизации отдельных символов из потока сокета?