Пользуюсь System.IO.Stream.Read(byte[] buffer, int offset, int count). Есть ли альтернатива этому методу (или устанавливаемому свойству), чтобы метод не возвращался, пока не будет прочитан весь счетчик (или не будет достигнут конец потока)? Или я должен сделать что-то вроде этого:
int n = 0, readCount = 0;
while ((n = myStream.Read(buffer, readCount, countToRead - readCount)) > 0)
readCount += n;





BinaryReader.ReadBytes блокирует желаемым образом. Однако это не эквивалентно чтению до конца потока. (Вы не хотите вызывать BinarReader.ReadBytes(int.MaxValue) - он попытается создать буфер размером 2 ГБ!)
Я обычно использую MemoryStream для чтения всех данных из потока неизвестного размера. См. этот связанный вопрос для примера кода.