2013-10-17 81 views
2

這是我的代碼:爲什麼FileSystemWatcher在創建文件時引發Changed事件?

_instrumentsFolderWatcher.Changed += _instrumentsFolderWatcher_Changed; 
_instrumentsFolderWatcher.Created += _instrumentsFolderWatcher_Created; 
_instrumentsFolderWatcher.Deleted += _instrumentsFolderWatcher_Deleted; 

其中_instrumentsFolderWatcherFileSystemWatcher實例。問題是,當我在被監控的文件夾中粘貼文件時,創建和更改的事件都會被觸發。爲什麼要改變的事件被解僱?此外,更改後的事件與Changed的ChangeType一起被觸發。我如何解決這個問題?

Edit:爲什麼Changed事件在我更改文件名時未被觸發?

+0

當您「粘貼」文件時,新文件將被創建和更改。你能解釋這是如何給你造成問題的嗎? – William

+0

希望這個幫助:http://stackoverflow.com/questions/449993/vb-net-filesystemwatcher-multiple-change-events –

+0

@William:如果它是如此明顯,下一個問題是爲什麼要改變的事件被解僱2次? – Jack

回答

2

MSDN FileSystemWatcher Class

常見的文件系統操作可能會引發多個事件。例如,當文件從一個目錄移動到另一個目錄時,可能會引發幾個OnChanged和一些OnCreated和OnDeleted事件。移動文件是一項複雜的操作,由多個簡單操作組成,因此引發多個事件。同樣,某些應用程序(例如防病毒軟件)可能會導致由FileSystemWatcher檢測到的其他文件系統事件。

嘗試使用Renamed事件來確定文件何時被重命名。

相關問題