2010-04-15 84 views
0

看起來,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; 
  • 如果更改一個文件,文件更改事件觸發兩次。

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

  • Deleted事件不會觸發

你們怎麼知道這些問題的任何解決辦法(使用移刪除,以及嘗試過)?

+1

你不會說哪個事件會發生兩次。 – spender 2010-04-15 15:40:23

+1

修復您的NotifyFilter值。 – 2010-04-15 16:16:45

回答

3

FileSystemWatcher

常見的文件系統操作可能會 提高不止一個事件。例如,對於 示例,當文件從一個 目錄移動到另一個時,可能會引發一些OnClenge事件和一些OnCreated事件和 OnDeleted事件。 移動文件是一個複雜的操作 ,它由多個簡單的 操作組成,因此會引發多個 事件。同樣,某些應用程序(例如防病毒軟件) 可能會導致由 FileSystemWatcher檢測到的附加文件系統 事件。

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

+0

親愛的主席先生,也許你可以看看我的問題,關於你的答案,http://stackoverflow.com/questions/7184472/fileinfo-exceptions。提前致謝 – Derek 2011-08-25 08:28:52