C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 112 を表示中)
■66395 / )  Re[2]: 複数のフォルダ・ファイルの変更を監視したい
□投稿者/ YY (2回)-(2013/04/19(Fri) 16:24:44)
太郎冠者 様
ご回答どうもありがとうございます。

> FileSystemWatcher自体には複数のルートフォルダの監視機能は無かったと思います。
> なので、監視したいルートフォルダの数だけFileSystemWatcherのインスタンスを用意する必要があります。

下記のように変更してみたが、下記のエラーが出て上手くインスタンスの設定ができない。


サンプルコード -------ここから-----------------------------
Private watcher() As System.IO.FileSystemWatcher = Nothing

'Button1のClickイベントハンドラ
Private Sub Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Button1.Click

dim array(1) as string
array(0) = "E:\"
array(1) = "H:\"

dim i as integer

for i = 0 to 1


watcher(i) = New System.IO.FileSystemWatcher '←この行でエラー

'NullReferenceExceptionはハンドルされませんでした。
オブジェクト参照がオブジェクトインスタンスに設定されていません。



'監視するディレクトリを指定
watcher(i).Path = array(i)
'最終アクセス日時、最終更新日時、ファイル、フォルダ名の変更を監視する
watcher(i).NotifyFilter = System.IO.NotifyFilters.LastAccess Or _
System.IO.NotifyFilters.LastWrite Or _
System.IO.NotifyFilters.FileName Or _
System.IO.NotifyFilters.DirectoryName
'すべてのファイルを監視
watcher(i).Filter = ""
'UIのスレッドにマーシャリングする
'コンソールアプリケーションでの使用では必要ない
'watcher.SynchronizingObject = Me

'イベントハンドラの追加
AddHandler watcher(i).Changed, AddressOf watcher_Changed
AddHandler watcher(i).Created, AddressOf watcher_Changed
AddHandler watcher(i).Deleted, AddressOf watcher_Changed
AddHandler watcher(i).Renamed, AddressOf watcher_Renamed

'監視を開始する
watcher.EnableRaisingEvents = True
Console.WriteLine("監視を開始しました。")

next

End Sub
返信 編集キー/


管理者用

- Child Tree -