2011-10-18 12 views
0

複数のFileSystemWatchersを使用して異なるテキストファイルを見たいと思っています。複数のFileSystemWatchersの使用

私はウォッチャーの作成に成功し、ファイル変更イベントが呼び出されており、テキストファイルの変更を文字列に追加してフォームに表示することができます。

私が知りたいことは、どのウォッチャーがイベントを引き起こしているかをどのように知ることができるかです。

例:ウォッチャー1、ウォッチャー2、ウォッチャー3?

私は変更されたファイルのパスとファイル名を知ることができますが、これは本当に私を助けません。

+0

まだOKです。私は自分自身の問題を解決することができたと思う。私は、さまざまなウォッチャーに使用されるファイルパスを持つ配列を作成しました。これにより、ウォッチャーと配列をリンクさせ、どのイベントを発生させたかを解明することができます。 – alexwiese

答えて

1

私はあなた自身がすでにこれを行う方法を見つけたことに気が付いていますが、解雇されたイベント内の送信者パラメータを見ることをお勧めします。これは多くのイベントでよく起こります。小さな例があります:

private static FileSystemWatcher watcherTxt; 
private static FileSystemWatcher watcherXml; 

static void Main(string[] args) 
{ 
    String dir = @"C:\temp\"; 

    watcherTxt = new FileSystemWatcher(); 
    watcherTxt.Path = dir; 
    watcherTxt.Filter = "*.txt"; 
    watcherTxt.EnableRaisingEvents = true; 
    watcherTxt.Created += new FileSystemEventHandler(onCreatedFile); 

    watcherXml = new FileSystemWatcher(); 
    watcherXml.Path = dir; 
    watcherXml.Filter = "*.xml"; 
    watcherXml.EnableRaisingEvents = true; 
    watcherXml.Created += new FileSystemEventHandler(onCreatedFile); 

    Console.ReadLine(); 
} 

private static void onCreatedFile(object sender, FileSystemEventArgs e) 
{ 
    if (watcherTxt == sender) 
    { 
     Console.WriteLine("Text Watcher Detected: " + e.FullPath); 
    } 

    if (watcherXml == sender) 
    { 
     Console.WriteLine("XML Watcher Detected: " + e.FullPath); 
    } 
} 
関連する問題