2012-06-01 44 views
1

环境不一致的一系列事件:Windows7的64位/ C#FileSystemWatcher的生成创建事件

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

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

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

'c#'和'e-> FullPath'? –

+0

这肯定不像C#给我。 – Gabe

+0

我对输入C++代码表示歉意。 – JChan

回答

0

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

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

我从以下网站找到了一些帮助,经过一段代码修改后,它适合我的需求。

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