使用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?
}
答案 0 :(得分:2)
听起来你真的不想使用异步代码?使用异步调用时,无法知道在异步调用完成之前读取了多少字节,这将在不同的执行线程中。
你可以在调用BeginRead后阻塞并使用某种互斥量等待EndRead完成然后获取值,但是没有必要异步执行它。
答案 1 :(得分:2)
如果你需要它回到你调用BeginRead的地方,那你就错过了一个技巧;你也可以打电话给Read。异步的全部意义在于您通常以断开连接的方式处理数据。
但是,如果你想要做的只是别的东西,你也可以在原始方法中调用EndRead。只是不要指定回调。