我想使用多个FileSystemWatchers来观看不同的文本文件。
我成功创建了观察者,并且正在调用文件更改事件,我可以将文本文件中的更改添加到字符串中并在表单上显示。
我想知道的是我怎么知道哪个观察者导致了这个事件?
EG。 watcher1,watcher2或watcher3?
我知道我可以找到已更改的文件的路径和文件名,但这对我没有帮助。
答案 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);
}
}