|
分類:[C#]
お世話になります。
CentOS7 .netCore環境において全く初めてですが、C#言語で フォルダ常駐監視(FileSystemWatcher)を用いて、フォルダ内のファイルの更新を監視 するプログラムを作成しております。
以下のようなソースで試してみましたところ、1つのフォルダ内を監視するのであれば 問題なく動作しました。
static void Main(string[] args) { FileSystemWatcher directoryWatcher = new FileSystemWatcher(); FileSystemWatcher fileWatcher = new FileSystemWatcher();
directoryWatcher.Path = @"/var/test/filewatcher"; directoryWatcher.NotifyFilter = NotifyFilters.DirectoryName | NotifyFilters.CreationTime; directoryWatcher.Created += delegate (object sender, FileSystemEventArgs e) { //Console.WriteLine("OnCreated" + e.FullPath); }; directoryWatcher.Changed += delegate (object sender, FileSystemEventArgs e) { //Console.WriteLine("OnChanged" + e.FullPath); };
fileWatcher.Path = @"/var/test/filewatcher"; fileWatcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.CreationTime | NotifyFilters.LastAccess; fileWatcher.Filter = "*.*";
fileWatcher.Created += OnCreatedFile; fileWatcher.Changed += OnChangedFile; fileWatcher.Deleted += OnDeletedFile; fileWatcher.Renamed += OnRenamedFile;
directoryWatcher.EnableRaisingEvents = true; fileWatcher.EnableRaisingEvents = true;
Console.WriteLine("Press 'q' to quit the sample."); while (Console.Read() != 'q') ; }
ただ、監視対象ファイルは動的に変更があり、増減もあります。(監視対象のフォルダの 一覧が定期的に更新されます。)
そのため、複数のフォルダ内のファイルの監視が必要なのです。
その場合、それぞれについて、FileSystemWatcherのインスタンスを生成して、動かさないといけない でしょうか。
監視対象一覧を見に行くのと、複数フォルダの監視とは切り離してべつのプログラムにするしか ないでしょうか。 良い案があれば、ご教示くださいませ。
|