vb.net - 文件系统观察器不工作

标签 vb.net filesystemwatcher

我在 Form1_Load 中添加了 FileSystemWatcher,如下所示:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ....................
        Dim watcher As New FileSystemWatcher()
        'For watching current directory
        watcher.Path = "/"
        'For watching status.txt for any changes
        watcher.Filter = "status.txt"
        watcher.NotifyFilter = NotifyFilters.LastWrite
        watcher.EnableRaisingEvents = True
        AddHandler watcher.Changed, AddressOf OnChanged
End Sub

我有一个 OnChanged 函数,它是一个简单的 MessageBox。不过,当我更改 status.txt 文件时,没有显示消息框。

最佳答案

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim watcher As New IO.FileSystemWatcher()

'For watching current directory
watcher.Path = **System.IO.Directory.GetCurrentDirectory()** 'Note how to obtain current directory
watcher.NotifyFilter = NotifyFilters.LastWrite

'When I pasted your code and created my own status.txt file using 
'right click->new->Text File on Windows 7 it appended a '.txt' automatically so the
'filter wasn't finding it as the file name was status.txt.txt renaming the file
'solved the problem
watcher.Filter = "status.txt" 

AddHandler watcher.Changed, AddressOf OnChanged

watcher.EnableRaisingEvents = True
End Sub

Private Shared Sub OnChanged(ByVal source As Object, ByVal e As IO.FileSystemEventArgs)
MessageBox.Show("Got it")
End Sub

来自http://bartdesmet.net/blogs/bart/archive/2004/10/21/447.aspx

您可能会注意到,在某些情况下,单个创建事件会生成多个由您的组件处理的 Created 事件。例如,如果您使用 FileSystemWatcher 组件监视目录中新文件的创建,然后使用记事本创建文件进行测试,则即使只创建了一个文件,您也可能会看到生成了两个 Created 事件。这是因为记事本在写入过程中执行多个文件系统操作。记事本批量写入磁盘,创建文件内容,然后创建文件属性。其他应用程序可以以相同的方式执行。由于 FileSystemWatcher 监视操作系统事件,因此将拾取这些应用程序触发的所有事件

关于vb.net - 文件系统观察器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3376763/

相关文章:

c# - 映射网络驱动器上的 FileSystemWatcher

C# 延迟写入 XML

vb.net - 如何将带有 "!@@@"的字符串格式函数从vb6.0迁移到vb.net?

vb.net - 新 pc 导致 "namespace of type specified in the imports doesn' t 包含任何公共(public)成员”在 VB.NET

vb.net - VB.NET 中重载 'And' 运算符的示例是什么?

c# - 如何通过用户名监控文件服务器上的文件访问和更改?

c# - FileSystemWatcher 中的 LastWrite NotifyFilter

c# - FileSystemWatcher 事件未触发

c# - 在无边界 WinForm 上投影

vb.net - SQL BETWEEN 的 LINQ 等效项