StreamReader.Read和StreamReader.ReadBlock之间的区别

文档简单地说ReadBlock是

“阻止版本的阅读”

但是,这是什么意思?

有人以前问了这个问题,但是,对吧?

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

那个回答的人说

基本上,这意味着您可以依赖StreamReader.ReadBlock,直到它被读取为您所要求的为止,或者它已到达流的末尾。

我是否正确理解这是必需的,因为Read可能无法为您提供所需的一切? 那只是因为它返回0并不意味着你到达文件的末尾?

那么这意味着检查返回的字节数以外的其他内容(EndOfStream?)或使用ReadBlock代替?

ReadBlock并不意味着它是线程安全的。 如果你使用Reflector来查看StreamReader.ReadBlock(它inheritance自TextReader.ReadBlock)的实现,它所做的就是多次调用“Read”方法,直到“Read”方法返回0或者我们读为请求的多个字节。 这是必需的,因为“Read”方法不一定会返回您要求的字节数。