2011-05-20 159 views
3

我正在嘗試監視文件夾(及其子文件夾)的更改。但是,我的處理程序事件從未執行。我正在使用以下代碼:無法使用C#中的FileSystemWatcher監視文件夾#

FileSystemWatcher m_Watcher = new FileSystemWatcher(); 
m_Watcher.Path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/Portal 2 Map Installer/"; 
m_Watcher.Filter = ""; 
m_Watcher.NotifyFilter = NotifyFilters.LastAccess | 
      NotifyFilters.LastWrite | 
      NotifyFilters.FileName | 
      NotifyFilters.DirectoryName; 
m_Watcher.IncludeSubdirectories = true; 
m_Watcher.Changed += new FileSystemEventHandler(OnFolderChange); 
m_Watcher.EnableRaisingEvents = true; 

請幫助!

+0

該代碼看起來對我來說是正確的。問題必須存在於其他地方。你想要觀看什麼類型的文件系統?例如,這不適用於FAT32分區。 – 2011-05-20 10:57:06

+0

我想我已經想通了!出於某種原因,我的Form1_Load事件不會觸發,這是我進行所有初始化的地方。現在來找出原因。 – YoshieMaster 2011-05-20 11:14:02

+0

好吧,讓它工作!現在有誰知道如何阻止三次被觸發的事件?我觸發了創建的事件,然後發生了兩個更改的事件。 – YoshieMaster 2011-05-20 11:16:22

回答

0

出錯事件創建一個處理程序,並看看它說:

m_Watcher.Error += new ErrorEventHandler(OnError); 
+0

我做了這個,得到了3個新錯誤 預期得到或設置訪問器 – YoshieMaster 2011-05-20 11:01:17

+0

錯誤屬性或索引「Portal_2_Level_Installer.Form1.OnError」不能在此上下文中,因爲它缺少get訪問 – YoshieMaster 2011-05-20 11:01:48

+0

錯誤「Portal_2_Level_Installer.Form1.OnError」是「屬性」,但使用像一個「方法」 – YoshieMaster 2011-05-20 11:02:04

0

上有Changed事件處理程序的一些注意事項:

Changed事件是意外上調,當一個文件已重命名,但在重命名目錄時不會引發。要注意重命名,請使用Renamed事件。

因此,謹慎處理事件(至少)。

+0

該文件夾或其內容將永遠不會被刪除。文件被放置到文件夾中,起作用,然後被刪除。 – YoshieMaster 2011-05-20 11:06:58