我必须创建一个可读的流。由于访问外部源,流很慢地填充了数据。为了节省内存,我希望流的用户尽快读取数据。
问题:如果现在没有字节可用,Stream.Read会返回什么但很快就会返回?
实现返回读取的字节数。实施 在这种情况下,将阻塞直到至少一个字节的数据被读取 没有数据可用。只有在没有更多时,读取才返回0 流中的数据不再是预期的。实施是免费的 返回的字节数少于请求的字节数,即使流的末尾有 没有达到。
唉,这个描述没有说明ReadTimeout。
MSDN about Stream.ReadTimeout:
获取或设置一个以毫秒为单位的值,该值确定了多长时间 流将在超时之前尝试读取。 ReadTimeout 应该重写属性以提供适当的行为 流。
好的,所以阅读很清楚,不是吗?
但是如果未达到流的末尾并且ReadTimeout中没有可用的字节该怎么办?
我无法返回0,因为这意味着会到达流的末尾。
我应该提出TimeOutException
,虽然Stream.Read
没有提到它吗?
Stream.Read返回的标准反应是什么,如果没有字节可用于ReadTimeout但是还没有到达流的末尾?