2010-04-15 124 views
0

看起来,FileSystemWatcher多次触发事件。这是我的设置;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; 
  • 如果更改一个文件,文件更改事件触发两次。

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

  • Deleted事件不会触发

你们怎么知道这些问题的任何解决办法(使用移删除,以及尝试过)?

+1

你不会说哪个事件会发生两次。 – spender 2010-04-15 15:40:23

+1

修复您的NotifyFilter值。 – 2010-04-15 16:16:45

回答

3

FileSystemWatcher

常见的文件系统操作可能会 提高不止一个事件。例如,对于 示例,当文件从一个 目录移动到另一个时,可能会引发一些OnClenge事件和一些OnCreated事件和 OnDeleted事件。 移动文件是一个复杂的操作 ,它由多个简单的 操作组成,因此会引发多个 事件。同样,某些应用程序(例如防病毒软件) 可能会导致由 FileSystemWatcher检测到的附加文件系统 事件。

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

+0

亲爱的主席先生,也许你可以看看我的问题,关于你的答案,http://stackoverflow.com/questions/7184472/fileinfo-exceptions。提前致谢 – Derek 2011-08-25 08:28:52