stream.beginread与stream.read的关系

lifanghui1 2011-11-07 11:42:22
stream.beginread一般是用于异步读,而stream.read则用于同步读,
其中在一参考书中描述说调用stream.beginread时同步调用stream.read,
但在另一参考书中却又描述stream.read缺省实现是调用stream.beginread方法,
请问各位大侠解释一下:
到底是谁调用谁呢,还是互不关联?
...全文
306 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿非 2011-11-07
  • 打赏
  • 举报
回复
其中在一参考书中描述说调用stream.beginread时同步调用stream.read

这个说法是正确的。

http://msdn.microsoft.com/zh-cn/library/system.io.stream.beginread(VS.80).aspx
lifanghui1 2011-11-07
  • 打赏
  • 举报
回复
感谢Sandy945非常详细的描述,希望以后能经常得到你的指点。
阿非 2011-11-07
  • 打赏
  • 举报
回复
这句话是不是可以理解为stream.beginread方法中一定会调用Read方法
---------------------------------------------------------
不是的。


BeginRead也可能会发生阻塞这种情况
-------------------------------
这个是对的。

你没有仔细看我在#3的回复, 又或者说我在#1的回复说的不完整

其中在一参考书中描述说调用stream.beginread时同步调用stream.read

这个确切的说是部分正确的,就是说默认情况调用stream.beginread时会调用stream.read

这是同步的,所以会发生阻塞。

但还有非默认的情况,就是我在#3说的,构造流对象时 你指定useAsync 为true

这个时候再调用stream.beginread 就是异步的。

这种情况就是“如果已经异步打开某些类(如 FileStream 和 NetworkStream)的实例,则这些实例将完全支持异步操作。”
lifanghui1 2011-11-07
  • 打赏
  • 举报
回复
补充一下。
http://topic.csdn.net/t/20060104/17/4498205.html
此贴支持stream.beginread是异步非阻塞的观点。
lifanghui1 2011-11-07
  • 打赏
  • 举报
回复
谢谢Sandy945和JulioHuang的解释
另外请问一下两位:
BeginRead 在流上的默认实现将同步调用 Read 方法,这意味着 Read 在某些流上可能发生阻塞。
这句话是不是可以理解为stream.beginread方法中一定会调用Read方法,进而理解为BeginRead也可能会发生阻塞这种情况
黄亮 2011-11-07
  • 打赏
  • 举报
回复
beginread异步(delegate回),read同步(马上回)
阿非 2011-11-07
  • 打赏
  • 举报
回复
1-> 是指调用构造函数时 指定参数useAsync为true ,默认为false。

2-> 嗯,是的。
lifanghui1 2011-11-07
  • 打赏
  • 举报
回复
但里面的解释有点不明白,
BeginRead 在流上的默认实现将同步调用 Read 方法,这意味着 Read 在某些流上可能发生阻塞。但是,如果已经异步打开某些类(如 FileStream 和 NetworkStream)的实例,则这些实例将完全支持异步操作。因此,对 BeginRead 的调用不会在那些流上阻塞。可以重写 BeginRead(例如,使用异步委托)以提供异步行为。

1.这里说的异步打开某些类(如 FileStream 和 NetworkStream)的实例,是指类似File.open()打开的FileStream的吗?
2.可以重写 BeginRead(例如,使用异步委托)以提供异步行为。这里说的重写是否是指FileStream等中已经实现的BeginRead的方法?

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧