ホームページ > バックエンド開発 > C++ > FilesystemWatcherが変更されたイベントを2回トリガーするのはなぜですか?

FilesystemWatcherが変更されたイベントを2回トリガーするのはなぜですか?

DDD
リリース: 2025-01-28 12:36:09
オリジナル
511 人が閲覧しました

Why Does My FileSystemWatcher Trigger the Changed Event Twice?

FilesystemWatcherの変更されたイベントは、繰り返されるトリガーで問題を繰り返します

問題の説明:

ファイル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)
{
   // ...事件处理逻辑...
}
ログイン後にコピー

解決策:

属性はこの問題を軽減することがありますが、場合によっては、手動でフィルタリングしてインシデントを繰り返す必要がある場合があります。

フィルター他の条件(ファイルサイズやコンテンツなど)に基づいてイベントを繰り返します。

NotifyFilterオプションは、インシデントの繰り返しトリガーを引き起こす可能性があるため、使用しません。

改良されたファイルシステムウォッチャー関数を提供する3番目のパーティライブラリを考慮します。

以上がFilesystemWatcherが変更されたイベントを2回トリガーするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート