文件系统观察器为“已创建”事件生成不一致的事件数

本文关键字:事件 不一致 已创建 观察 创建 文件系统 | 更新日期: 2023-09-27 18:36:07

环境: Windows7 64 位/C#

我有一个名为"Folder50"的文件夹,里面有 50 个文件。当我使用 ctrl + C 和 ctrl +V 命令将此文件夹复制到文件系统监视文件夹时,有时系统会生成 51 个事件,包括根文件夹。

但有时,系统只为根文件夹生成一个事件。

   void onCreated(object source, FileSystemEventArgs e)
   {
        Console::WriteLine( "File: {0} {1}", e.FullPath, e.ChangeType );
   }

文件系统观察器为“已创建”事件生成不一致的事件数

我已经尝试了很多文件系统观察器,并遇到了与您遇到的相同问题。经过一番研究,我发现这似乎只是它的运作方式。如果在最后一个事件的指定时间段内发生其他事件,我在设置计时器以忽略其他事件方面取得了一些成功,但显然也会丢失不同文件的并发副本。

如果您观看所有可用的事件,就会出现更多奇怪之处。复制文件将触发删除和新文件创建事件,有时是每个事件的倍数。保存文件可能会引发大量写入。总的来说,FileSystemWatcher是非常不一致的。

从以下网站找到了一些帮助,在对代码进行一些修改后,它适合我的需求。

http://spin.atomicobject.com/2010/07/08/consolidate-multiple-filesystemwatcher-events/