1

环境: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 );
   }
4

1 回答 1

0

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

如果您观看所有可用的事件,则会发生更多的怪异事件。复制文件将触发删除和新文件创建事件,有时会触发多个事件。保存文件可能会引发大量写入。总的来说,FileSystemWatcher 非常不一致。

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

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

于 2012-06-01T18:59:03.833 回答