0

ファイルが変更されたときにディレクトリからファイルをコピーするコードを書く必要があります。

C/C++ は少し知っていますが (:])、.net は使用したことがありません。私は良いと思いますか?最初に FSW で新しいスレッドを作成し、変更が発生したときにファイルをコピーする次のスレッドを作成しますか?

4

3 に答える 3

2

C/C++ に慣れている場合は、ReadDirectoryChangesW() を使用する必要があります。FileSystemWatcher は、この API 関数の薄いラッパーです。しかし、間違いなく行きやすいです。サンプル SDK コードはこちらから入手できます。

FSW/RDC の通常の問題は、ファイルを書き込んでいるアプリがファイルをロックしているため、通知を受け取ったときにファイルにアクセスできないことです。必要な操作を定期的に実行しようとする別のスレッドによって空にされた通知を格納するには、スレッドセーフなキューが必要です。これは、通知を処理するときの健全なアプローチでもあります。大きな通知バッファーを作成する必要がないように、できるだけ時間を費やす必要はありません。これらは高価なシステム リソースです。

于 2010-02-23T12:30:33.673 に答える
1

あなたが説明するパターンは、1 つのスレッドがFileSystemWatcherを使用してファイルを監視し、イベント (またはファイル) をキューに挿入し、別のスレッドがキューを読み取り、イベントを処理することです。

于 2010-02-23T11:26:52.407 に答える
0

ファイルシステムの監視はOS​​の機能であるため、あなたは正しい方向に進んでいます。.NETで使用することも、ネイティブC++で直接使用することもできます。.NETは、より単純なプログラミングモデルを提供します。

要件によっては、ディレクトリを監視してファイルを自動的にコピーできるRobocopy(少なくともVistaに含まれている)を使用できることに注意してください。

于 2010-02-23T11:32:41.760 に答える