2016-10-04 78 views
0

我使用FileSystemWatcher在文件夾內容更改時獲取事件。當我添加,刪除或重命名文件時,我已經成功地監視了事件,但是當我正在觀看的目錄內創建新文件夾時,未觸發該事件。添加文件夾時FileWatcher未觸發事件

我曾嘗試與下列事件:

watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.Size | NotifyFilters.Attributes; 

我還設置了以下兩個屬性是true,雖然它並沒有幫助

watcher.EnableRaisingEvents = true; 
watcher.IncludeSubdirectories = true; 

這是可以做到與FileSystemWatcher還是我需要使用別的東西?

感謝

+0

您是否嘗試過使用'NotifyFilters.DirectoryName'? – smoksnes

+0

可能是因爲你在代碼中的任何地方使用了'watch.Filter'? – Fratyx

回答

2

您還沒有包括目錄

NotifyFilters.DirectoryName 

在你notifyfilter。

https://msdn.microsoft.com/en-us/library/system.io.notifyfilters(v=vs.110).aspx

因此您應該設置你的notifyfilter如下:

watcher.NotifyFilter = NotifyFilters.DirectoryName | 
         NotifyFilters.LastAccess | 
         NotifyFilters.LastWrite | 
         NotifyFilters.FileName | 
         NotifyFilters.Size | 
         NotifyFilters.Attributes; 

我沒有核實,你並沒有提到它,但有Filter集可能過濾掉diectory,雖然docs講述獲取或設置過濾器字符串,用於確定在目錄中監視哪些文件。

+0

我相信枚舉元素:'NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.Size | NotifyFilters.Attributes'工作的文件夾或文件,無論您是否使用'NotifyFilters.DirectoryName' – Ash

+0

@AshwinNair這是不正確的。你必須包括'NotifyFilters.DirectoryName' – user3185569

+0

@rene值得一提的是一個特定的過濾器像'「* .txt」'破壞了這個設置。它需要或者沒有設置,或者設置爲任何東西('「*。*」') – user3185569