我在Windows服務中安裝了以下FileSystemWatcher。即使IncludeSubdirectories設置爲false,FileSystemWatcher也會獲取子目錄事件
FileSystemWatcher Watcher = new FileSystemWatcher();
Watcher.Path = watcherDir;
Watcher.NotifyFilter = NotifyFilters.LastWrite;
Watcher.Renamed += Watcher_Renamed;
Watcher.Changed += Watcher_Changed;
Watcher.Error += Watcher_Error;
Watcher.Filter = "*.*";
Watcher.IncludeSubdirectories = false;
Watcher.EnableRaisingEvents = true;
我看到一些不一致的行爲 - 它也監聽子目錄中的更改。我已經登錄查看它發現它有點奇怪。
我正在看C:\ Temp \ Folder1,而其他一些進程在C:\ Temp \ Folder1 \ Folder2中創建一個日誌文件。此FileSystemWatcher對象正在挑選此信息 -
1. e.FullPath給出子目錄的名稱,在這種情況下爲C:\ Temp \ Folder1 \ Folder2
2. Path.GetDirectoryName(e.FullPath)爲我提供目錄我正在觀看,即C:\ Temp \ Folder1。
3.擴展名爲空,這就是我忽略這一點,這是我忽略這種情況。
任何建議,我怎麼能找出這裏發生了什麼?
是的,我已經檢查過,但不應該Watcher.IncludeSubdirectories = false;防止這種情況發生? – Kodathon
@Kodathon - no。將目錄看作只是包含文件列表的特殊文件,以及在文件系統上的何處找到它們。當從目錄添加或刪除文件時,該特殊文件本身正在改變。這是一個特殊的文件,位於「Folder1」目錄中,您正在監控的那個目錄中,您正在接收事件。 * * Folder2中的文件*發生更改時,*不*接收事件。只是當文件被添加或從目錄中刪除。 –
如果該屬性處理它,則會首選。無論如何,將與此額外檢查去驗證路徑。謝謝 ! – Kodathon