为什么FileSystemWatcher会触发两次?有没有简单的方法解决它?如果我更新或编辑文本文件,那么应该只会触发一次,对吗?
这个链接http://weblogs.asp.net/ashben/archive/2003/10/14/31773.aspx说:
事件被触发两次 - 如果明确指定了事件处理程序(AddHander FSW.Created, AddressOf FSW_Created),则事件将被触发两次。这是因为,默认情况下,公共事件会自动调用相应的受保护方法(OnChanged、OnCreated、OnDeleted、OnRenamed)。要解决这个问题,只需删除显式事件处理程序(AddHandler...)。
"删除显式事件处理程序"是什么意思?
这个链接http://weblogs.asp.net/ashben/archive/2003/10/14/31773.aspx说:
事件被触发两次 - 如果明确指定了事件处理程序(AddHander FSW.Created, AddressOf FSW_Created),则事件将被触发两次。这是因为,默认情况下,公共事件会自动调用相应的受保护方法(OnChanged、OnCreated、OnDeleted、OnRenamed)。要解决这个问题,只需删除显式事件处理程序(AddHandler...)。
"删除显式事件处理程序"是什么意思?
Imports System.IO
Public Class Form2
Private Sub FileSystemWatcher1_Changed(ByVal sender As System.Object, ByVal e As System.IO.FileSystemEventArgs) Handles FileSystemWatcher1.Changed
'this fires twice
MessageBox.Show("test")
End Sub
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
FileSystemWatcher1.Path = "C:\Users\c\Desktop\test\"
FileSystemWatcher1.NotifyFilter = NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName Or NotifyFilters.CreationTime
FileSystemWatcher1.IncludeSubdirectories = False
FileSystemWatcher1.Filter = "text.txt"
End Sub
End Class
MessageBox
警告后面去掉分号。 - Arrow