Не могли бы вы не дать методу Run () завершиться, пока приложение не будет закрыто? Может быть, больше похоже на: (извините, но я связываю это с памятью, а не с IDE, поэтому она может быть не идеальной):
public void Run()
{
watcher.Path = @"C:\queue";
watcher.Created += new FileSystemEventHandler(watcher_Created);
watcher.EnableRaisingEvents = true;
try
{
while(true)
Thread.Sleep();
}
catch(ThreadAbortedException)
{
return;
}
}
и бегун:
Worker worker = new Worker();
Thread thread = new Thread(worker.Run);
thread.Start();
Console.ReadLine(); // something else more interesting would go here.
thread.Abort(); // do when ready to close the app.
Если подумать, почему вы начинаете новую тему для этого? Почему бы просто:
watcher.Path = @"C:\queue";
watcher.Created += new FileSystemEventHandler(watcher_Created);
watcher.EnableRaisingEvents = true;
Console.ReadLine(); // something else more interesting would go here.
Или поместите ваш FileSystemWatcher в переменную, которая не выйдет из области видимости (в основной форме, если приложение WinForms, или в любом другом классе, имеющем метод Main (), если приложение консоли).
Или здесь происходит что-то еще, что не показано?