我使用 Dokan(.NET) 库在 C# 中创建了一个虚拟驱动器,它运行良好。
但是,当我尝试在另一个应用程序中从驱动器读取文件时,无论何时使用同步读取操作,如 System.IO.File.ReadAllText(...)
,都会出现异常。
异常的文本是:“句柄不支持同步操作。可能需要更改 FileStream 构造函数的参数以指示异步打开句柄”。
因此,如果我对此的解释正确,.NET 显然会尝试在单个同步操作中读取文件的全部内容,但 Dokan 似乎不允许这样做。
但是当使用像 ReadAllText
这样的方法时,我实际上无法控制 FileStream
的构造方式(这不是该方法的全部意义所在吗? ,毕竟,只需获取文件内容即可,而不必费心使用 Streams、Reader 和 Buffers 等等?)。
我能否让 Dokan 以某种方式支持对其文件句柄的同步 I/O 访问?或者我是否必须以某种方式接受这样一个事实,即在 Dokan 托管的文件上不可能进行同步操作(并希望任何可能必须在我的虚拟驱动器上运行的应用程序都依赖于它们)?
最佳答案
关于c# - Dokan/Dokan.NET(不)支持同步 I/O 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7077477/