0

看起来,FileSystemWatcher 不止一次触发事件。这是我的设置;

 watcher = new FileSystemWatcher();
 watcher.Path = @"D:\testSpace";
 watcher.InternalBufferSize = 1024*64;
 watcher.Deleted += Triggered;
 watcher.Changed += Triggered;
 watcher.Created += Triggered;
 watcher.Error += ErrorOccured;
 watcher.NotifyFilter = NotifyFilters.LastWrite;
 watcher.IncludeSubdirectories = true;

 watcher.EnableRaisingEvents = true; 
  • 如果更改文档,则会触发两次 Document changed 事件。

  • 除非在文件夹下创建新文件,否则不会触发新文件夹创建事件。

  • 未触发已删除事件(也尝试使用 shift delete)

你们知道解决这些问题的方法吗?

4

1 回答 1

4

文件系统观察器

常见的文件系统操作可能会引发多个事件。例如,当一个文件从一个目录移动到另一个目录时,可能会引发几个 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个复杂的操作,由多个简单的操作组成,因此会引发多个事件。同样,某些应用程序(例如,防病毒软件)可能会导致 FileSystemWatcher 检测到的其他文件系统事件。

链接中描述了第一个问题的解决方案。

于 2010-04-15T15:43:58.100 回答