一千萬個為什麽

搜索

FileSystemWatcher事件觸發器問題

看起來,FileSystemWatcher不止一次觸發事件。這是我的設置;

 watcher = new FileSystemWatcher();
 watcher.Path = @"D:\testSpace";
 watcher.InternalBufferSize = 1024*64;
 watcher.Deleted += Triggered;
 watcher.Changed += Triggered;
 watcher.Created += Triggered;
 watcher.Error += ErrorOccured;
 watcher.NotifyFilter = NotifyFilters.LastWrite;
 watcher.IncludeSubdirectories = true;

 watcher.EnableRaisingEvents = true; 
  • 如果您更改了文檔,則會將文檔更改事件觸發兩次。

  • 除非在文件夾下創建新文件,否則不會觸發新文件夾創建的事件。

  • 未觸發的已刪除事件(也嘗試使用shift delete)

你們知道這些問題的解決方法嗎?

最佳答案

FileSystemWatcher:

通用文件系統操作可能   舉辦不止一場比賽。對於   例如,從一個文件移動文件時   目錄到另一個,幾個   OnChanged和一些OnCreated和   可能會引發OnDeleted事件。   移動文件是一項復雜的操作   它由多個簡單組成   操作,因此提高了多個   事件。同樣,一些應用程序   (例如,防病毒軟件)   可能會導致其他文件系統   被檢測到的事件   FileSystemWatcher的。

第一個問題的解決方案在鏈接中描述。

轉載註明原文: FileSystemWatcher事件觸發器問題