Монитор файловой системы
Монитор активизируется следующей несложной процедурой:
Private Sub btnStart_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs)Handles btnStart.Click If CheckPath()Then FileSystemWatcherl.Path = txtDirectory.Text FileSystemWatcherl.IncludeSubdirectories = chkRecursive.Checked FileSystemWatcherl.EnableRaisingEvents = True End If End Sub
Для пущей надежности мы убеждаемся в том, что заданный каталог существует. При проверке используется класс Directory, поэтому программа должна импортировать пространство имен System.IO:
Function CheckPath()As Boolean If Directory.Exists(txtDirectory.Text) Then Return (True) Else txtDirectory.Text= "" txtDirectory.Focus 0 MsgBox("No directory by that name exists!") Return False End If End Function
VB.NET автоматически подключает обработчик события. В следующем фрагменте при изменениях в заданном каталоге вызывается окно сообщения:
Private Sub FileSystemWatcherl_Changed(ByVal sender As Object. ByVal e As System.IO.FileSystemEventArgs) Handles FileSystemWatcher1.Changed MsgBox(txtDirectory.Text & "has changed!") End Sub
К сожалению, мы не сможем полностью описать этот замечательный компонент. Но прежде, чем вы перейдете к самостоятельным исследованиям, примите к сведению пару полезных советов:
- Свойство Filter устанавливает фильтр для имен файлов и каталогов, за которыми вы хотите следить.
- Существует много разных типов изменений, поэтому в реальных программах.рекомендуется более точно определять интересующие вас события. Например, если вы хотите, чтобы программа оповещалась только о создании новых файлов, организуйте обработку события Created.
Если вам потребуется более точный контроль, обратитесь к описанию свойства NotifyFilter в электронной документации. Его значение задается в виде констант перечисляемого типа, объединенных оператором Ог, и определяет типы отслеживаемых изменениях. Например, можно отслеживать изменения атрибутов, имени и размера файла.
Примечание
Без задания свойств Filter и NotifyFilter программа, осуществляющая рекурсивный мониторинг активного или корневого каталога, становится практически бесполезной – событие Changed будет слишком часто срабатывать в результате обычных служебных операций Windows.