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

标签 c# file io dokan

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

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

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

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

但是当使用像 ReadAllText 这样的方法时,我实际上无法控制 FileStream 的构造方式(这不是该方法的全部意义所在吗? ,毕竟,只需获取文件内容即可,而不必费心使用 Streams、Reader 和 Buffers 等等?)。

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

最佳答案

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

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

msdn async file io

关于c# - Dokan/Dokan.NET(不)支持同步 I/O 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7077477/

相关文章:

c# - 从 php 页面获取响应

c - 如何将文件捆绑/包含并使用到 C - linux 中的可执行文件中?

java - 合并大文件的算法

c - 为什么在这段代码中,fgets 不应该返回 null?

java - 如何使用 Java 中的 ObjectInputStream 从文件中读取对象列表?

c# - umbraco 和 c# Razor : how to print odd and even vlaue alternativelty in partialview or view in page from Model

c# - 将泛型与 XmlSerializer 结合使用

c# - 在 C# 中模拟局部变量

vb.net - 相当于 "Open fileName For Output As #1"VB6 到 .NET

python - IO错误: [Errno 21] Is a directory: '/tmp/speech_dataset/'