C#networkstream.beginread与endread的问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 13:48:27
初学C#,这两个怎么用不晓得,哪位有空帮我讲解讲解,最好能贴段小代码给我看看,beginread与endread要成对出现吗?MSDN看懂!

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);
}