异步读取/写入文件的最简单方法?
问题描述:
我正在寻找一种使用Win API异步读取/写入文件的简单方法。我所拥有的是头脑就像异步的winsock API(WSAxxx)完成例程。但是,文件API似乎没有这些。他们隐藏在某个地方吗?异步读取/写入文件的最简单方法?
在一个单独的线程中等待重叠的事件会增加线程管理开销,更不用说那里需要成为每个文件的线程,或者需要面对64个对象的问题。完成端口是一个矫枉过正的问题。在单独的线程中同步读取文件是无关紧要的。
有什么建议吗?
答
CreateFile
和ReadFile
/WriteFile
函数支持所谓的“重叠”模式,这就是你所需要的。还有仅在异步模式下工作的ReadFileEx
/WriteFileEx
。
总之,您需要打开FILE_FLAG_OVERLAPPED
标志的文件并通过OVERLAPPED
结构(以及xxxEx
操作时的回调)到文件访问功能。
Here's使用它的示例类。
答
只要进入异步领域,您应该忘记“最简单” 严格说来,最简单的方法是使用.NET的System.IO.FileStream,在构造函数和BeginRead/EndRead方法中使用isAsync = true。