如何获取异步读取中读取的字节数?

时间:2011-03-30 14:39:49

标签: .net asynchronous

使用C#,如何返回从我调用EndRead的函数中读取的字节数?

即:

x.BeginRead (...ReadProc..);
// how can I get the number of bytes read here?

ReadProc (IAsyncResult ar)
{
    int numBytesRead = EndRead ();
    // how can I return numBytesRead?

}

2 个答案:

答案 0 :(得分:2)

听起来你真的不想使用异步代码?使用异步调用时,无法知道在异步调用完成之前读取了多少字节,这将在不同的执行线程中。

你可以在调用BeginRead后阻塞并使用某种互斥量等待EndRead完成然后获取值,但是没有必要异步执行它。

答案 1 :(得分:2)

如果你需要它回到你调用BeginRead的地方,那你就错过了一个技巧;你也可以打电话给Read。异步的全部意义在于您通常以断开连接的方式处理数据。

但是,如果你想要做的只是别的东西,你也可以在原始方法中调用EndRead。只是不要指定回调。