2011-08-16 29 views
8

我创建使用杜坎(.NET)库C#的虚拟驱动器,它的工作相当不错。Dokan/Dokan.NET(不)支持同步I/O吗?

然而,当我尝试从另一个应用程序驱动器读取文件时使用同步读取操作,如System.IO.File.ReadAllText(...)我得到一个异常。

异常的文字是:“句柄不支持同步操作到FileStream构造函数的参数可能需要改变,以表明该手柄以异步方式打开。”

所以,如果我正确地解释这一点,.NET显然试图读取在一个同步操作该文件的全部内容,但杜坎似乎并没有允许。

但是,当使用像ReadAllText这样的方法时,我并没有真正控制FileStream的构建方式(不是说该方法的全部重点,毕竟只是简单地获取文件内容而不必打扰与流和读者和缓冲区什么的?)。

我能得到杜坎以支持它的文件同步I/O访问句柄不知何故?或者我必须以某种方式生活在Dokan托管的文件中同步操作是不可能的(并且希望没有任何应用程序可能在我的虚拟驱动器上工作取决于它们)?

+0

你设法解决这个问题。我是Dokan的新手。最新当前是0.6 – Bamboo

回答

0

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

这对不同的方式好介绍/教程进行异步文件I/O:

msdn async file io

+1

访问类型不取决于我。我只是想提供一个任何人都可以访问的虚拟文件系统。例如,如果访问是通过其他人编写的.NET应用程序发生的,而这些应用程序正好使用'ReadAllText'方法从虚拟驱动器读取文件,那么我就无法做到。文件系统应该能够支持任意应用程序可能使用的任何类型的访问。 –