2011-08-16 5 views
8

私はDokan(.NET)ライブラリを使ってC#で仮想ドライブを作成しました。Dokan/Dokan.NET(not)は同期I/Oをサポートしていますか?

しかし、別のアプリケーションのドライブからファイルを読み込もうとすると、System.IO.File.ReadAllText(...)のように同期的に読み取る操作を使用するたびに例外が発生します。

例外のテキストは次のとおりです。 "Handleは同期操作をサポートしていません。ハンドルが非同期で開かれたことを示すために、FileStreamコンストラクタのパラメータを変更する必要があります。

これを正しく解釈すると、.NETはファイルの内容全体を1回の同期操作で読み取ろうとしますが、Dokanはそれを許可していないようです。

しかし ReadAllTextのような方法を使用しているとき、私は本当に FileStreamが構築される方法を制御することはできませんが(そのメソッドの全体のポイントは、結局のところ、単に気にすることなく、ファイルの内容を取得するということではありませんストリームと読者とバッファとそれ以外のものはありますか?)。

Dokanがファイルハンドル上で同期I/Oアクセスをサポートするようにすることはできますか?あるいは、Dokanがホストしているファイルでは同期操作ができないという事実をどうにかして生きなければならないのですか?

+0

は、あなたがこの問題を解決するために管理してください。私はDokanに新しいです。現在最新です0.6 – Bamboo

答えて

0

ファイルの読み込みに同期性が必要な理由は何ですか?ストリームへの非同期読み込みを行い、コールバックを介して終了すると処理できます。

これは、I/O asyncファイル行うにはさまざまな方法で良いプレゼンテーション/チュートリアルがあります。

msdn async file io

+1

アクセスの種類は私に依存しません。私はただ誰もがアクセスできる仮想ファイルシステムを提供したかったのです。そのアクセスが、例えば、他の誰かによって書かれた.NETアプリケーションのように起こった場合、 'ReadAllText'メソッドを使用して仮想ドライブからファイルを読み込むと、私ができることはあまりありません。ファイルシステムは、任意のアプリケーションが使用しているあらゆる種類のアクセスをサポートできるだけでなければなりません。 –

関連する問題