2009-08-02 90 views

回答

1

.NET BCL中沒有直接函數,但是有一些類可以幫助您處理Windows I/O。 1)初始化Overlapped類的一個實例。

2)與回調呼叫包。

3)將生成的NativeOverlapped(包的返回值)傳遞給WriteFileGather

4)據我所知,應該在操作完成時在工作線程上調用你的回調函數。

請務必閱讀WriteFileGather上的MSDN文檔,因爲它有一些要求,例如,數據必須在系統的頁面邊界上對齊(我認爲在x86-x64上的4K,在安騰上的8K)等等等等。

0

FileStream類公開一個文件流,支持同步和異步讀寫操作。 流上BeginWrite的默認實現同步調用Write方法,這意味着Write可能會阻塞某些流。但是,如果實例已經異步打開,FileStream和NetworkStream等類的實例完全支持異步操作。因此,對BeginWrite的調用不會阻止這些流。 FileStream類應該在單聲道上完全相同。

+0

不是我正在尋找的,異步方法仍然處理單個緩衝區。我正在尋找類似於Java的GatheringByteChannel的東西。 – 2009-08-03 07:42:32