最简单的异步读/写文件的方法?

时间:2009-10-27 13:56:25

标签: winapi file asynchronous

我正在寻找一种使用Win API异步读/写文件的简单方法。我所拥有的是像异步winsock API(WSAxxx)完成例程。但是文件API似乎没有那些。它们隐藏在某个地方吗?

在单独的线程中等待重叠的事件会增加线程管理开销,更不用说要么需要每个文件的线程,要么需要面对64个对象的问题。完井港口是一种过度杀伤力。在单独的线程上同步读取文件是无关紧要的。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

CreateFileReadFile / 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。