Dokan / Dokan.NET(不)支持同步I / O吗?

时间:2011-08-16 11:27:39

标签: c# file io dokan

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

但是,当我尝试从另一个应用程序中的驱动器读取文件时,每当使用同步读取的操作时都会出现异常,例如System.IO.File.ReadAllText(...)

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

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

但是当使用ReadAllText之类的方法时,我对FileStream的构造方式并没有任何控制权(这不是该方法的全部意义,毕竟,只需获取文件内容,而不必打扰Streams和读者和缓冲区等等?)。

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

1 个答案:

答案 0 :(得分:0)

您在阅读文件时需要同步的任何原因?您可以对流进行异步读取,并在通过回调完成时进行处理。

这有关于异步文件i / o的不同方法的良好演示/教程:

msdn async file io