考虑一类下面的代码称为工人如何在事件等待第二个线程
FileSystemWatcher watcher = new FileSystemWatcher();
public void Run()
{
watcher.Path = @"c:\queue";
watcher.Created += new FileSystemEventHandler(watcher_Created);
watcher.EnableRaisingEvents = true;
}
现在,这里是我想要做的王氏工人什么,但obviouly这种不会飞。
Worker worker = new Worker();
Thread thread = new Thread(worker.Run);
thread.Start();
Console.ReadLine(); // something else more interesting would go here.
原因是,Run方法结束,而不是进入某种事件循环。我如何获得一个事件循环。 (我想我“正在寻找像Application.Run)
我不明白你的意思“FileSystemWatcher已经在执行一个事件循环”。一旦Run方法结束,线程的执行路径就完成了。线程然后停止,因此没有线程执行FileSystemWatcher事件。 – 2009-07-30 19:04:47
watcher.EnableRaisingEvents = true;开始观看文件系统的对象,基本上启动“事件循环”。发生变化时,事件将被调用。检查这里的例子:http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.enableraisingevents.aspx – 2009-07-30 19:07:46
我明白你现在正在尝试做什么。您不需要在单独的线程上执行Run()。一旦Run()完成,观察者将仍然存在并且正在监视文件系统。 – 2009-07-30 19:10:22