我正在尋找一種使用Win API異步讀取/寫入文件的簡單方法。我所擁有的是頭腦就像異步的winsock API(WSAxxx)完成例程。但是,文件API似乎沒有這些。他們隱藏在某個地方嗎?異步讀取/寫入文件的最簡單方法?
在一個單獨的線程中等待重疊的事件會增加線程管理開銷,更不用說那裏需要成爲每個文件的線程,或者需要面對64個對象的問題。完成端口是一個矯枉過正的問題。在單獨的線程中同步讀取文件是無關緊要的。
有什麼建議嗎?
我正在尋找一種使用Win API異步讀取/寫入文件的簡單方法。我所擁有的是頭腦就像異步的winsock API(WSAxxx)完成例程。但是,文件API似乎沒有這些。他們隱藏在某個地方嗎?異步讀取/寫入文件的最簡單方法?
在一個單獨的線程中等待重疊的事件會增加線程管理開銷,更不用說那裏需要成爲每個文件的線程,或者需要面對64個對象的問題。完成端口是一個矯枉過正的問題。在單獨的線程中同步讀取文件是無關緊要的。
有什麼建議嗎?
我知道在.net它是possible。我不知道的是它映射到哪些win32函數
CreateFile
和ReadFile
/WriteFile
函數支持所謂的「重疊」模式,這就是你所需要的。還有僅在異步模式下工作的ReadFileEx
/WriteFileEx
。
總之,您需要打開FILE_FLAG_OVERLAPPED
標誌的文件並通過OVERLAPPED
結構(以及xxxEx
操作時的回調)到文件訪問功能。
Here's使用它的示例類。
只要進入異步領域,您應該忘記「最簡單」 嚴格說來,最簡單的方法是使用.NET的System.IO.FileStream,在構造函數和BeginRead/EndRead方法中使用isAsync = true。