8

我使用 Dokan(.NET) 库在 C# 中创建了一个虚拟驱动器,它运行良好。

但是,当我尝试在另一个应用程序中从驱动器中读取文件时,只要使用同步读取的操作(例如System.IO.File.ReadAllText(...).

异常的文本是:“句柄不支持同步操作。可能需要更改 FileStream 构造函数的参数以指示句柄是异步打开的”。

因此,如果我正确解释这一点,.NET 显然会尝试在单个同步操作中读取文件的全部内容,但 Dokan 似乎不允许这样做。

但是,当使用像ReadAllText我这样的方法时,我并不能真正控制它的FileStream构造方式(这不是该方法的全部意义吗,毕竟,只需获取文件内容而不必打扰 Streams 和 Readers 和 Buffers还有什么?)。

我可以让 Dokan 以某种方式支持对其文件句柄的同步 I/O 访问吗?或者我是否必须以某种方式忍受在 Dokan 托管的文件上不可能进行同步操作的事实(并希望可能永远不会在我的虚拟驱动器上运行的应用程序依赖于它们)?

4

1 回答 1

0

有什么理由需要读取文件的同步性?您可以对流进行异步读取,并在它完成时通过回调进行处理。

这对执行异步文件 i/o 的不同方法有很好的演示/教程:

msdn 异步文件 io

于 2012-06-04T15:45:15.893 回答