Winapi 异步读/写文件的最简单方法?
我正在寻找一种使用WinAPI异步读/写文件的简单方法。我想到的是类似于异步WinsockAPI(WSAxxx)完成例程的东西。然而,文件API似乎没有这些。它们藏在什么地方了吗 在单独的线程中等待重叠事件会增加线程管理开销,更不用说每个文件需要一个线程,或者需要面对64个对象的问题。完成端口是一种过度的杀伤力。在单独的线程上同步读取文件是不相关的Winapi 异步读/写文件的最简单方法?,winapi,file,asynchronous,Winapi,File,Asynchronous,我正在寻找一种使用WinAPI异步读/写文件的简单方法。我想到的是类似于异步WinsockAPI(WSAxxx)完成例程的东西。然而,文件API似乎没有这些。它们藏在什么地方了吗 在单独的线程中等待重叠事件会增加线程管理开销,更不用说每个文件需要一个线程,或者需要面对64个对象的问题。完成端口是一种过度的杀伤力。在单独的线程上同步读取文件是不相关的 有什么建议吗?我知道在.net中是很有用的。我不知道它映射到哪个win32函数,我知道在.net中它是。我不知道它映射到哪个win32函数Creat
有什么建议吗?我知道在.net中是很有用的。我不知道它映射到哪个win32函数,我知道在.net中它是。我不知道它映射到哪个win32函数
CreateFile
和ReadFile
/WriteFile
函数支持所谓的“重叠”模式,这正是您所需要的。还有只在异步模式下工作的ReadFileEx
/writefilex
简言之,您需要使用file\u FLAG\u OVERLAPPED
标志打开文件,并将OVERLAPPED
结构(以及在xxxEx
操作时的回调)传递给文件访问函数
使用它的示例类。
CreateFile
和ReadFile
/WriteFile
函数支持所谓的“重叠”模式,这正是您所需要的。还有只在异步模式下工作的ReadFileEx
/writefilex
简言之,您需要使用file\u FLAG\u OVERLAPPED
标志打开文件,并将OVERLAPPED
结构(以及在xxxEx
操作时的回调)传递给文件访问函数
一个使用它的示例类。一旦你进入异步领域,你应该忘记“最容易”这个词
说真的,最简单的方法是在构造函数和BeginRead/EndRead方法中使用.NET的System.IO.FileStream和isAsync=true。一旦进入异步领域,就应该忘记“最简单”这个词 说真的,最简单的方法是在构造函数和BeginRead/EndRead方法中使用.NET的System.IO.FileStream和isAsync=true