使用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?
}
使用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?
}
這聽起來像你真的不希望使用異步代碼?使用異步調用時,無法知道有多少字節被讀取,直到完成異步調用,這些調用將處於不同的執行線程中。
在調用BeginRead並使用某種類型的互斥體等待EndRead完成並獲取該值之後,您可以阻止,但是這樣做沒有必要異步執行。
如果您需要回到您稱爲BeginRead的位置,那麼您錯過了一個技巧;你可能會打電話給Read。異步的關鍵在於你通常以斷開的方式處理數據。
但是,如果您只想在之外的其他東西正在讀取,您也可以在原始方法中調用EndRead。只是不要指定回調。
+1,不錯的細微差別:) – 2011-03-30 14:46:02