社区
C#
帖子详情
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
打赏
收藏
stream.beginread与stream.read的关系
stream.beginread一般是用于异步读,而stream.read则用于同步读, 其中在一参考书中描述说调用stream.beginread时同步调用stream.read, 但在另一参考书中却又描述stream.read缺省实现是调用stream.beginread方法, 请问各位大侠解释一下: 到底是谁调用谁呢,还是互不关联?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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的方法?
C#
Stream
篇系列.pdf
C#
Stream
篇系列.pdf 温故下基础知识
.Net笔记:System.IO之
Stream
的使用详解
本篇文章是对.Net中System.IO之
Stream
的使用进行了详细的分析介绍,需要的朋友参考下
基于C#的tcp图像传输
C#图像传输程序在VS2010环境下编译通过,可以自己设置IP选择图像传输。 C#图像传输程序在VS2010环境下编译通过,可以自己设置IP选择图像传输。
c#tcpClient发送和接收
最简单的tcpClient建立通信、发送数据、接收数据函数,编写TCP通信的第一步。
C# Socket聊天服务端程序
创建Socket实例,实现简单的发送和接收数据。适合初学者参考!
C#
111,126
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章