FileSystemWatcher не работает - PullRequest
2 голосов
/ 31 июля 2010

Я добавил FileSystemWatcher в Form1_Load так:

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, окно сообщения не отображается.

Ответы [ 2 ]

5 голосов
/ 31 июля 2010
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 для мониторинга создания новых файлов в каталоге, а затем протестируете его с помощью Блокнота для создания файла, вы можете увидеть два сгенерированных события, созданных, даже если был создан только один файл.Это потому, что Блокнот выполняет несколько действий файловой системы в процессе записи.Блокнот записывает на диск пакетами, которые создают содержимое файла, а затем атрибуты файла.Другие приложения могут работать таким же образом.Поскольку FileSystemWatcher отслеживает действия операционной системы, все события, запускаемые этими приложениями, будут обнаружены

0 голосов
/ 31 июля 2010

Вам также следует прослушать событие «Удалено».

В зависимости от используемого вами редактора, они иногда удаляют / заменяют файл вместо простого его изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...