如果任何外部打开的文本文件被修改或没有修改,我试图使用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事件就会被激活。当文本文件被外部修改时,它可以正常工作。然而,当我在程序中保存文件时,它的工作方式却是事件触发的。我不想这个,因为它不应该触发,而我在我的程序。
发布于 2015-01-22 07:06:41
我不认为有一种方法可以明确地排除文件系统监视程序中的文件或应用程序。解决方法之一是在保存文件时将文件名添加到列表中,然后在文件系统监视处理程序中检查该列表(并删除该文件)。
https://stackoverflow.com/questions/28082535
复制相似问题