我一直在逼自己发疯,试图今天解决这个问题。一段时间以来,我一直在使用 FileSystemWatcher 来捕获文件更改。我最初在框架 3.5 上的一个项目已移至 4.0 以利用一些 EF 东西,它似乎影响了 Visual Studio 允许我调试利用 FileSystemWatcher 的代码的方式。这是我遇到的问题的一个小例子(请参阅 watcher_Changed):
class Program
{
static void Main(string[] args)
{
FileSystemWatcher watcher = new FileSystemWatcher(@"C:\inputFolder\");
watcher.Changed += new FileSystemEventHandler(watcher_Changed);
watcher.NotifyFilter = NotifyFilters.LastAccess
| NotifyFilters.LastWrite
| NotifyFilters.FileName
| NotifyFilters.DirectoryName;
Console.WriteLine("Ready");
watcher.EnableRaisingEvents = true;
Thread.Sleep(System.Threading.Timeout.Infinite);
}
static void watcher_Changed(object sender, FileSystemEventArgs e)
{
//This exception here (just an example), does not get sent to the debugger, rather it goes to the
//console and then the application exits
throw new ArgumentException();
}
}
将 ArgumentException 扔到控制台后,代码将始终为我关闭。在更复杂的情况下,这给我带来了一些主要的调试问题。
有任何想法吗?