C#networkstream.beginread与endread的问题
初学C#,这两个怎么用不晓得,哪位有空帮我讲解讲解,最好能贴段小代码给我看看,beginread与endread要成对出现吗?MSDN看懂!...
初学C#,这两个怎么用不晓得,哪位有空帮我讲解讲解,最好能贴段小代码给我看看,beginread与endread要成对出现吗?MSDN看懂!
展开
1个回答
展开全部
MSDN看懂?都有明确的解释的。
这是.net中所有异步访问的标准接口,比如读写文件、网络、委托回调等。
异步访问一般用于读写时间较长的操作,顾名思义,BeginRead()就是开始读,并立即返回,不会等待执行完。这个函数的最后两个参数比较特殊,是专用于异步的,一个是AsyncCallback ,它是个委托,用于回调异步调用结束后的自定义函数,另一个是Object,用于传递需要的参数给你的自定义函数的,一般在你的自定义函数中再调用EndRead(),用于获取异步访问结束后的返回值。
e.g:
IAsyncResult result = myNetworkStream.BeginRead(myReadBuffer, 0, myReadBuffer.Length,
new AsyncCallback(NetworkStream_ASync_Send_Receive.myReadCallBack),
myNetworkStream);
//这个返回值result 可以用来控制对异步线程的同步
public void myReadCallBack(IAsyncResult ar)
{
NetwordStream ns = (NetwordStream)ar.AsyncState;
int numberOfBytesRead = ns.EndRead(ar);
}
这是.net中所有异步访问的标准接口,比如读写文件、网络、委托回调等。
异步访问一般用于读写时间较长的操作,顾名思义,BeginRead()就是开始读,并立即返回,不会等待执行完。这个函数的最后两个参数比较特殊,是专用于异步的,一个是AsyncCallback ,它是个委托,用于回调异步调用结束后的自定义函数,另一个是Object,用于传递需要的参数给你的自定义函数的,一般在你的自定义函数中再调用EndRead(),用于获取异步访问结束后的返回值。
e.g:
IAsyncResult result = myNetworkStream.BeginRead(myReadBuffer, 0, myReadBuffer.Length,
new AsyncCallback(NetworkStream_ASync_Send_Receive.myReadCallBack),
myNetworkStream);
//这个返回值result 可以用来控制对异步线程的同步
public void myReadCallBack(IAsyncResult ar)
{
NetwordStream ns = (NetwordStream)ar.AsyncState;
int numberOfBytesRead = ns.EndRead(ar);
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询