7

アプリケーションがディレクトリ内のファイルに変更を加えたときにFileSystemWatcherオブジェクトを確実に無効にして、ディレクトリへの外部の変更のみを監視する方法を知っている人はいますか?

書き込みを実行する直前にfalseに設定EnableRaisingEventsし、直後にtrueに戻そうとしましたが、この方法は信頼できないようで、イベントが発生することがあります。

私が考えることができる他の唯一のことは、書き込みを実行した後、OSがFSWを再度有効にする前にディレクトリの変更を完了するまで少し待つことですが、それはハックのようで、私はそれが好きではありません。


問題に加えて、ディレクトリは潜在的に多くのファイルで構成されており、そのIDは私の知識と制御を超えているため、特定のファイルに対してイベントが発生するのを待ってから無視することはできません。1回の変更後にFSWイベントがいくつでも発生する可能性があります(多くのファイルが更新される可能性があるため)。

4

1 に答える 1

6

.NETAPIを使用してこれを行うことはできません。

複数のユーザーが指摘しているように、行った変更のリストを維持し、観察した変更セットからそれらを差し引く方がよいでしょう。

Win32レベルのAPIを使用することもできます。これは、私が間違っていない場合に変更を行うプロセスのPIDを提供します(これについてはよくわかりませんが、カーネルスペース内でこれ(およびそれ以上)を行う前にドライバーを作成しました) )。

更新:私はこのプロジェクトで一緒に働いていたチームの誰かに電話をしました、そして彼らは私たちがカーネル空間にのみPIDを持っていることを確認しました。

于 2010-05-09T11:13:13.217 に答える