2010-07-31 66 views
2

我在Form1_Load的增加FileSystemWatcher这样的: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文件时,不显示任何消息框。

+0

我会亲自避免像鼠疫一样的FileSystemWatcher。回到原来的问题(http://stackoverflow.com/questions/3371214/in-vb-net-how-to-know-if-the-file-hasnt-been-changed-for-x-seconds/3371233 #3371233)并选择一种不同的方法。 – PaulG 2010-07-31 14:30:43

+0

我第二个这个。 FileSystemWatcher只会坐在那里等待另一个条件失败。切勿将其用于任何重要的事情。 – 2016-07-27 14:15:51

回答

5
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

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

+0

感谢它正在工作。还有一个问题。警报正在两次显示一次更改。 – Shubham 2010-07-31 05:00:24

+0

亲爱的主席先生,也许你可以看看我的问题,关于你的答案。 http://stackoverflow.com/questions/7184472/fileinfo-exceptions – Derek 2011-08-25 07:47:19

0

您还应该听取已删除的事件。

根据您使用的编辑器,他们有时删除/替换文件,而不是简单地改变它。

+0

还没有工作! – Shubham 2010-07-31 04:53:46