Vb.net 文件系统监视程序错误

Vb.net 文件系统监视程序错误,vb.net,filesystemwatcher,Vb.net,Filesystemwatcher,我正在尝试使用FileSystemWatcher来通知我的程序,如果任何外部打开的文本文件被修改或与Notepad++不同。如果文本文件已在我的程序中打开,并且也已在外部打开并已修改,则必须让我的程序知道 我创建了FileSystemWatcher,如下所示: Public Sub Watch() Dim watcher As New IO.FileSystemWatcher() 'For watching current directory watcher.Path

我正在尝试使用FileSystemWatcher来通知我的程序,如果任何外部打开的文本文件被修改或与Notepad++不同。如果文本文件已在我的程序中打开,并且也已在外部打开并已修改,则必须让我的程序知道

我创建了FileSystemWatcher,如下所示:

Public Sub Watch()
    Dim watcher As New IO.FileSystemWatcher()

    'For watching current directory
    watcher.Path = Path.GetDirectoryName(Var.SaveLocation) 'Note how to obtain current directory
    watcher.NotifyFilter = NotifyFilters.LastWrite Or NotifyFilters.FileName
    watcher.Filter = Path.GetFileName(Var.SaveLocation)

    AddHandler watcher.Changed, AddressOf OnChanged

    watcher.EnableRaisingEvents = True
End Sub

Private Sub OnChanged(sender As Object, e As FileSystemEventArgs)
    MessageBox.Show("Reload")
End Sub

我已经将Watch方法添加到程序中的OpenFileDialog方法中。因此,每当打开一个新的文本文件时,FileSystemWatcher就会启动。我的问题是,如果我保存在程序中打开的文本文件,OnChanged事件就会被激活。当文本文件被外部修改时,它可以正常工作。但是,当我在程序中保存事件触发的文件时,它的工作方式应该是这样的。我不希望出现这种情况,因为当我在程序中时,它不应该触发。

我不认为有办法专门排除filesystemwatcher中的文件或应用程序。一种解决方法是在保存文件时将文件名添加到列表中,然后检查该列表并在filesystemwatcher处理程序中删除该文件。

我该怎么做?是否可以为我提供一个示例?在更改事件中,您可以使用e.FullPath查看已更改的文件,使用e.ChangeType查看更改类型。检查e.FullPath是否是应用程序保存的文件。