0

FileSystemWatcher へのすべての情報が含まれているデータベース テーブルから「ホットフォルダー」のリストを取得できる Windows サービスを作成しようとしています (ディレクトリのスキャン、ファイル フィルターなど)。

しかし、Created イベント ハンドラーを FileSystemWatcher に追加しようとすると、問題が発生します。

id  hotFolderName   directory   fileFilter  engineModule    includeSubdirs
1   PDFinvoices     c:/pdf      *.pdf       pdfModule       0
2   FlatFiles       c:/flat     *.txt       flatModule      1

したがって、テーブル内の投稿ごとに、上記の設定で FileSystemWatcher が作成されますが、私の問題は、EventHandler をそれに関連付けたい場合です。動的に行うにはどうすればよいですか?

したがって、この場合、私はやりたい:

fileSystemWatcher1.Created += new FileSystemEventHandler(dbResultSet("engineModule"));

これはどういうわけか行うことは可能ですか?pdfModule という名前の関数も必要であることはわかっていますが、問題ありません。モジュールを追加できるようにしたいだけですが、上記の構文を変更する必要はありません。

この場合のpdfModuleはメインクラスにない可能性があります。モジュールごとに1つのクラスを作成すると考えていました。pdfModule、flatModule のように ... 要点がわかります。

4

1 に答える 1

0

独自のファイル モニター クラスを作成し、その中にウォッチャー プロパティをラップする必要があります。イベントについては、以下のように処理できます。

this.yourwatcher.Created += new FileSystemEventHandler(this.yourwatcher_Created);
this.yourwatcher.EnableRaisingEvents = true;

サービス開始イベントでは、DBからすべての情報を取得でき、以下のようなことができます

this.filemonitor[0] = new CustomFileMonitor("pdfModule");  // This will configure watcher properties for PDF file types and attach event.
this.filemonitor[0].Start();

フォルダーの種類ごとに、ファイル モニターの新しいインスタンスを作成します。

于 2014-12-17T10:36:52.173 に答える