問題の説明:
ファイルSystemWatcherクラスを使用してテキストファイルの変更を監視すると、ファイルが変更されて保存されるたびに、オンチングされたイベントが2回トリガーされます。
コードの例:原因の分析:
これは、FilesystemWatcherクラスに知られている制限です。アプリケーション(メモ帳など)がバッチでファイルシステムを実行すると、たとえ1つのファイルのみが変更されていても、このクラスは複数のファイルシステムイベントをトリガーします。public void Initialize() { FileSystemWatcher fileWatcher = new FileSystemWatcher(); fileWatcher.Path = "C:\Folder"; fileWatcher.NotifyFilter = NotifyFilters.LastWrite; fileWatcher.Filter = "Version.txt"; fileWatcher.Changed += new FileSystemEventHandler(OnChanged); fileWatcher.EnableRaisingEvents = true; } private void OnChanged(object source, FileSystemEventArgs e) { // ...事件处理逻辑... }
解決策:
属性はこの問題を軽減することがありますが、場合によっては、手動でフィルタリングしてインシデントを繰り返す必要がある場合があります。
フィルター他の条件(ファイルサイズやコンテンツなど)に基づいてイベントを繰り返します。 改良されたファイルシステムウォッチャー関数を提供する3番目のパーティライブラリを考慮します。
NotifyFilter
オプションは、インシデントの繰り返しトリガーを引き起こす可能性があるため、使用しません。
以上がFilesystemWatcherが変更されたイベントを2回トリガーするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。