我正在寻找一种使用Win API异步读/写文件的简单方法。我所拥有的是像异步winsock API(WSAxxx)完成例程。但是文件API似乎没有那些。它们隐藏在某个地方吗?
在单独的线程中等待重叠的事件会增加线程管理开销,更不用说要么需要每个文件的线程,要么需要面对64个对象的问题。完井港口是一种过度杀伤力。在单独的线程上同步读取文件是无关紧要的。
有什么建议吗?
答案 0 :(得分:1)
CreateFile
和ReadFile
/ WriteFile
函数支持所谓的“重叠”模式,这是您所需要的。还有ReadFileEx
/ WriteFileEx
仅在异步模式下工作。
简而言之,您需要打开带有FILE_FLAG_OVERLAPPED
标志的文件,并将OVERLAPPED
结构(以及xxxEx
操作时的回调)传递给文件访问函数。
Here's使用它的示例类。
答案 1 :(得分:0)
我知道.net中的possible。我不知道它映射的是哪个win32函数
答案 2 :(得分:0)
一旦进入异步区域,就应该忘记“最简单”这个词 说真的,最简单的方法是在构造函数和BeginRead / EndRead方法中使用.NET的System.IO.FileStream和isAsync = true。