我在这里经历了很多关于FileSystemWatcher及其问题的帖子 我认为我正确设置它但我发现事件处理程序正在做一些奇怪的事情。
我在类库项目中设置了一个FileSystemWatcher,它在那里查找被删除的特定文件。删除该文件后,代码将提取文本文件的值并将其打印出来。
当执行这段代码并删除文件时 - 它将正确转到文件系统事件处理程序。并且代码将提取文本文件值并打印。 每隔一段时间它就会打印出删除文件的多个副本。 所以我在Visual Studio中放了一个调试器。 我注意到的是,一旦它进入事件处理程序,调试器就会跳转到整个地方。它的跳跃使它有时不止一次打印。
我是否遗漏了一些允许调试器和代码从头到尾运行而没有多次提取和打印调用的内容?
感谢。
以下是设置观察者的代码(我只是拿了块 - 不介意它是不是格式好):
private void WatchMainDropFile()
{
fileSystemWatcherMain = new FileSystemWatcher();
fileSystemWatcherMain.Path = Constants.FolderPath;
fileSystemWatcherMain.NotifyFilter = NotifyFilters.FileName;
fileSystemWatcherMain.Filter = DropFileName;
fileSystemWatcherMain.Created += new FileSystemEventHandler(OnMainDropFileCreated);
fileSystemWatcherMain.EnableRaisingEvents = true;
}
以下是事件代码:
private void OnMainDropFileCreated(object source, FileSystemEventArgs e)
{
//Disable the watcher
fileSystemWatcherMain.EnableRaisingEvents = false;
fileSystemWatcherMain.Created -= new FileSystemEventHandler(OnMainDropFileCreated);
try
{
if ((File.Exists(e.FullPath)))
{
//Print out contents of the file
ExtractFileForPrinting();
}
catch (Exception ex)
{
//Catch the error here later.
}
}
}