
FileSystemWatcherを使用してファイル監視を行おうと考えています。
対象ディレクトリは2つを監視できるようにしようと試みているのですが、
new を行ったあとでも_WatchersがNothingとなり、その後の処理がエラーになります。
newをしたのち_WatchにFileSystemWatcherの構造が付与されるようにしたいのですが、どこがおかしいのでしょうか?
教えてください。
また、追加で必要な項目がありましたら補足します。
【エラー内容】
'System.NullReferenceException' のハンドルされていない例外が xxx.exe で発生しました。
追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。
【使用環境】
Windows 2000 ,VisualStudio2002(VB) .netFrameWork1.1 使用
--------------------コード------------------------------
Private _Watchers() As System.IO.FileSystemWatcher
Private Sub Initialize()
Dim _ary(1) As String
_ary(0) = "C:\1"
_ary(1) = "C:\2"
_Watchers = New System.IO.FileSystemWatcher(_ary.GetLength(0)) {}
Dim i As Integer
For i = _ary.GetLowerBound(0) To _ary.GetUpperBound(0) - 1
_Watchers(i).EnableRaisingEvents = False
_Watchers(i).Path = _ary(i)
'プロパティ設定
'サブディレクトリは監視しない
_Watchers(i).IncludeSubdirectories = False
'ファイルの変更を監視する
watcher.NotifyFilter = System.IO.NotifyFilters.FileName
'XLSのファイルを監視
_Watchers(i).Filter = "*.xls"
'イベントハンドラの登録
AddHandler _Watchers(i).Created, AddressOf OnChange
'監視の開始
_Watchers(i).EnableRaisingEvents = True
Next i
End Sub 'Initialize
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
_watchersの配列の中身を生成していないためです
ReDim ステートメントで2要素の配列にするか
Dim宣言時に添え字を1として2要素にしておいて
Initializeルーチンの Forループの冒頭で
_Watchers(i) = new System.IO.FileSystemWatcher( ary(i) )
などとしてインスタンス化しましょう

No.1
- 回答日時:
--------------------------------------------------------
> _Watchers = New System.IO.FileSystemWatcher...
FileSystemWatcherの配列ができるだけで、_Watchers(0),_Watchers(1),がnullになっています。
_Watchers(0) = new ...
_Watchers(1) = new ...
とインスタンスをセットしないと、_Watchers(i)は使えません。
--------------------------------------------------------
FileSystemWatcherの配列が2個作られることを期待していると思いますが、実際には3個作られてしまいます。
_Watchers = New System.IO.FileSystemWatcher(UBound(_ary)) {}
としてみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルへのデータの貼付時に...
-
excelの、ある数式内の{}の意...
-
vbsでテキストファイル内の文字...
-
COLUMN(1:1)の意味を教え...
-
VBAのWorksheetFunctionの引数...
-
数値を浮動小数点32bitHEXコー...
-
配列の値を置換するにはどうす...
-
VB 配列の内容をファイルに書...
-
Xorshiftの値を絞り込む方法を...
-
Excel-vba 文字列と変数を...
-
VBAでダブルコーテーション入り...
-
C言語 exitの使い方
-
C#でのIF文 時間比較のやり方
-
EXCEL/VBA 変数の値をクリップ...
-
jsp~jspにhiddenを使って変数...
-
Windows Media Playerで動画を...
-
関数で複数の値を戻り値として...
-
VisualStudio2022でC言語プログ...
-
VBAのチェックボックス結果を集...
-
if文内での計算
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列の値を置換するにはどうす...
-
excelの、ある数式内の{}の意...
-
COLUMN(1:1)の意味を教え...
-
VBAのWorksheetFunctionの引数...
-
エクセル、この関数の意味は?
-
RichTextBoxの改行を認知してく...
-
vbsでテキストファイル内の文字...
-
○桁にある数値を取得する VB.N...
-
複数ディレクトリの監視(VB.NET...
-
エクセルへのデータの貼付時に...
-
数値を浮動小数点32bitHEXコー...
-
VBSで特定の文字列が含まれる場...
-
【エクセル】 関数による電子...
-
VB 配列の内容をファイルに書...
-
小数点の表示。
-
VBAで配列に文字列が入らない?
-
in_addrからchar型の文字列の変換
-
配列の座標指定について。
-
ループを違う条件で抜けるよう...
-
初心者プログラミング
おすすめ情報