Dot-Net
VB.NET FileSystemWatcher 多個更改事件
我有以下程式碼:
Imports System.IO Public Class Blah Public Sub New() InitializeComponent() Dim watcher As New FileSystemWatcher("C:\") watcher.EnableRaisingEvents = True AddHandler watcher.Changed, AddressOf watcher_Changed End Sub Private Sub watcher_Changed(ByVal sender As Object, ByVal e As FileSystemEventArgs) MsgBox(e.FullPath) End Sub End Class當我執行它並將更改保存到我的 C 驅動器上的文件時,程式碼執行良好,除了它執行 watcher_Changed() 方法四次。知道為什麼嗎?changeType 每次都是“4”。
謝謝。
從 VS.NET 文件的“故障排除 FileSystemWatcher 組件”部分…
為單個操作生成多個創建事件
您可能會注意到在某些情況下,單個創建事件會生成多個由您的組件處理的 Created 事件。例如,如果您使用 FileSystemWatcher 組件監視目錄中新文件的創建,然後使用記事本創建文件對其進行測試,即使只創建了一個文件,您也可能會看到生成了兩個 Created 事件。這是因為記事本在寫入過程中執行了多個文件系統操作。記事本分批寫入磁碟,創建文件內容,然後創建文件屬性。其他應用程序可以以相同的方式執行。因為 FileSystemWatcher 監視作業系統活動,所以這些應用程序觸發的所有事件都將被拾取。
注意:記事本也可能導致其他有趣的事件生成。例如,如果您使用 ChangeEventFilter 指定您只想監視屬性更改,然後您使用記事本寫入您正在監視的目錄中的文件,您將引發一個事件。這是因為記事本會在此操作期間更新文件的存檔屬性。