Я создал виртуальный диск на C # с помощью библиотеки Dokan (.NET), и он работает довольно хорошо.
Однако, когда я пытаюсь прочитать файл с диска в другом приложении, я получаю исключение всякий раз, когда использую операции, которые читаются синхронно, например System.IO.File.ReadAllText (...)
.
] Текст исключения следующий: «Дескриптор не поддерживает синхронные операции. Возможно, потребуется изменить параметры конструктора FileStream, чтобы указать, что дескриптор был открыт асинхронно».
Итак, если я правильно интерпретирую это, .NET очевидно, пытается прочитать все содержимое файла за одну синхронную операцию, но Докан, похоже, не позволяет этого.
Но при использовании такого метода, как ReadAllText
, я действительно не могу контролировать способ построения FileStream
(разве не в этом весь смысл этого метода, в конце концов, просто получить содержимое файла, не беспокоясь о потоках, считывателях, буферах и т. д.?).
Могу ли я заставить Dokan поддерживать доступ к синхронному вводу-выводу на нем? файл обрабатывает как-нибудь? Или мне нужно как-то смириться с тем фактом, что синхронные операции с файлами, размещенными в Dokan, просто невозможны (и надеюсь, что от них не зависит ни одно приложение, которое может когда-либо работать на моем виртуальном диске)?