gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 19:48:06 25 4
gpt4 key购买 nike

我使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com