1

環境:Windows764ビット/C#

「Folder50」という名前のフォルダがあり、その中に50個のファイルがあります。ctrl+Cおよびctrl+Vコマンドを使用してこのフォルダーをファイルシステム監視フォルダーにコピーすると、ルートフォルダーを含む51のイベントがシステムで生成されることがあります。

ただし、システムがルートフォルダに対して1つのイベントのみを生成する場合があります。

   void onCreated(object source, FileSystemEventArgs e)
   {
        Console::WriteLine( "File: {0} {1}", e.FullPath, e.ChangeType );
   }
4

1 に答える 1

0

私は FileSystemWatcher をかなり試しましたが、あなたが抱えているのと同じ問題を経験しました。ちょっとした調査の後、これがまさにそれが動作する方法であるように思われることがわかりました. 最後のイベントの指定された期間内に発生した場合に追加のイベントを無視するようにタイマーを設定することに成功しましたが、明らかに、異なるファイルの同時コピーも見逃されます。

利用可能なすべてのイベントを見ると、さらに奇妙なことが起こります。ファイルをコピーすると、削除イベントと新しいファイル作成イベントがトリガーされ、場合によってはそれぞれの倍数がトリガーされます。ファイルを保存すると、大量の書き込みが発生する可能性があります。全体として、FileSystemWatcher は非常に一貫性がありません。

次の Web サイトからいくつかのヘルプを見つけました。コードを少し変更した後、ニーズに合ったものになりました。

http://spin.atomicobject.com/2010/07/08/consolidate-multiple-filesystemwatcher-events/

于 2012-06-01T18:59:03.833 に答える