Вопрос

В документации просто говорится, что ReadBlock

«блокирующая версия Read»

Но что это значит?

Кто-то еще задавал вопрос раньше, но, да?

http://www.pcreview.co.uk/forums/thread-1385785.php

Отвечающий парень сказал

По сути, это означает, что вы можете положиться на Streamreader.ReadBlock не возвращаясь, пока он не прочитал столько, сколько вы его просили, либо достигли конца потока.

Правильно ли я понимаю, что это необходимо, потому что Read может не дать вам всего, что вы просили?И то, что он возвращает 0, НЕ означает, что вы достигли конца файла?

То есть это означает проверку чего-то другого, кроме количества возвращаемых байтов (EndOfStream?), или вместо этого использовать ReadBlock?

Это было полезно?

Решение

ReadBlock не означает, что он потокобезопасен.Если вы используете Reflector для просмотра реализации StreamReader.ReadBlock (которая унаследована от TextReader.ReadBlock), все, что он делает, — это выполняет несколько вызовов метода «Read», пока либо метод «Read» не вернет 0, либо мы не прочитаем как много байтов по запросу.Это необходимо, поскольку метод «Чтение» не обязательно вернет столько байтов, сколько вы запросили.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top