Dot-Net

VB.NET FileSystemWatcher 多個更改事件

  • September 12, 2018

我有以下程式碼:


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 指定您只想監視屬性更改,然後您使用記事本寫入您正在監視的目錄中的文件,您將引發一個事件。這是因為記事本會在此操作期間更新文件的存檔屬性。

引用自:https://stackoverflow.com/questions/449993