2012-10-19 30 views
0

我有下面的代碼,我想告訴我什麼時候將新文件添加到FileSystemWatcher正在監視的目錄中。問題是,當在被監視的目錄中創建一個文件時,它會引發三個事件 - 我只想要一個。提出的事件都「改變」了。有什麼我做錯了嗎?FileSystemMonitor只在目錄中創建文件時檢測一次?

FileSystemWatcher _fileWatcher = new FileSystemWatcher(); 
_fileWatcher.Path = DirToMonitor; 
_fileWatcher.NotifyFilter = NotifyFilters.LastWrite; 
_fileWatcher.Filter = "*.*"; 
_fileWatcher.Created += new FileSystemEventHandler(_fileWatcher_Created); 
_fileWatcher.Renamed += new RenamedEventHandler(_fileWatcher_Renamed); 
_fileWatcher.Changed += new FileSystemEventHandler(_fileWatcher_Changed); 
_fileWatcher.EnableRaisingEvents = true; 

編輯:我用「LastWrite」,因爲這被在目錄級,而不是新的文件監控。唯一可能的更改似乎是LastWrite,Size和Attributes。 LastWrite似乎是最明智的...

回答

1

我不完全確定,但我會說這是下到你的NotifyFilter。嘗試調整這些以包括其他事件,並且應該給你什麼,你需要

欲瞭解更多信息:NotifyFilters enumerarion

+0

的問題是,在NotifyFilter可能性適用於該目錄是monitored-無法創建新的文件。所以從那些只有LastWrite,屬性和大小將probaby更改時創建一個新文件。 – mezamorphic

+0

肯定通過使用CreationTime過濾器(應該只在創建文件時設置)才足夠?對不起,之前沒有做過這方面的任何工作,但鏈接中的示例意味着應該有可能。 – ChrisBint

+0

CreationTime適用於目錄,但不是新文件?添加新文件時,目錄創建時間不會更改?它似乎沒有在測試過程中工作 - 因此我最終使用了LastWrite。 – mezamorphic

相關問題