
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません 1 2022/06/06 22:04
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelの、ある数式内の{}の意...
-
配列の値を置換するにはどうす...
-
初心者プログラミング
-
エクセル、この関数の意味は?
-
エクセルへのデータの貼付時に...
-
C#の問題です。 文字列型の配列...
-
Excel-vba 文字列と変数を...
-
C言語 exitの使い方
-
VBAでダブルコーテーション入り...
-
フォームを開くときに、コンボ...
-
VBA 1行で複数の代入を行った...
-
Windows11のカメラで動画を撮り...
-
[開通手順]ネットワーク設定が...
-
4択問題のプログラムでランダム...
-
URLが開いた後に処理したい
-
IEEE規格で「いちばん近い偶数...
-
HTML上の2つの連動するプルダウ...
-
[VBS]変数を定数に変換する方法...
-
DWORDって
-
エラーの意味は? Lvalue req...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列の値を置換するにはどうす...
-
excelの、ある数式内の{}の意...
-
vbsでテキストファイル内の文字...
-
VBAのWorksheetFunctionの引数...
-
COLUMN(1:1)の意味を教え...
-
数値を浮動小数点32bitHEXコー...
-
VB6で配列を文字列に変換する方...
-
エクセル、この関数の意味は?
-
○桁にある数値を取得する VB.N...
-
VB 配列の内容をファイルに書...
-
VB.NET 2つの配列を連動して並...
-
RichTextBoxの改行を認知してく...
-
copyRecordsetの数値16桁以上に...
-
エクセルへのデータの貼付時に...
-
VBAで配列に文字列が入らない?
-
VBSで特定の文字列が含まれる場...
-
in_addrからchar型の文字列の変換
-
VB.NET 2次元配列
-
配列要素の演算
-
Win32APIでシリアル通信をする...
おすすめ情報