使用多个FileSystemWatcher

时间:2011-10-18 10:33:17

标签: filesystemwatcher

我想使用多个FileSystemWatchers来观看不同的文本文件。

我成功创建了观察者,并且正在调用文件更改事件,我可以将文本文件中的更改添加到字符串中并在表单上显示。

我想知道的是我怎么知道哪个观察者导致了这个事件?

EG。 watcher1,watcher2或watcher3?

我知道我可以找到已更改的文件的路径和文件名,但这对我没有帮助。

1 个答案:

答案 0 :(得分:2)

我意识到您已经找到了自己的方法,但我建议您查看正在触发的事件中的sender参数。这对许多事件都很常见。这是一个小例子:

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);
    }
}