添加文件夹时FileWatcher未触发事件

问题描述:

我使用FileSystemWatcher在文件夹内容更改时获取事件。当我添加,删除或重命名文件时,我已经成功地监视了事件,但是当我正在观看的目录内创建新文件夹时,未触发该事件。添加文件夹时FileWatcher未触发事件

我曾尝试与下列事件:

watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.Size | NotifyFilters.Attributes; 

我还设置了以下两个属性是true,虽然它并没有帮助

watcher.EnableRaisingEvents = true; 
watcher.IncludeSubdirectories = true; 

这是可以做到与FileSystemWatcher还是我需要使用别的东西?

感谢

+0

您是否尝试过使用'NotifyFilters.DirectoryName'? – smoksnes

+0

可能是因为你在代码中的任何地方使用了'watch.Filter'? – Fratyx

您还没有包括目录

NotifyFilters.DirectoryName 

在你notifyfilter。

https://msdn.microsoft.com/en-us/library/system.io.notifyfilters(v=vs.110).aspx

因此您应该设置你的notifyfilter如下:

watcher.NotifyFilter = NotifyFilters.DirectoryName | 
         NotifyFilters.LastAccess | 
         NotifyFilters.LastWrite | 
         NotifyFilters.FileName | 
         NotifyFilters.Size | 
         NotifyFilters.Attributes; 

我没有核实,你并没有提到它,但有Filter集可能过滤掉diectory,虽然docs讲述获取或设置过滤器字符串,用于确定在目录中监视哪些文件。

+0

我相信枚举元素:'NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.Size | NotifyFilters.Attributes'工作的文件夹或文件,无论您是否使用'NotifyFilters.DirectoryName' – Ash

+0

@AshwinNair这是不正确的。你必须包括'NotifyFilters.DirectoryName' – user3185569

+0

@rene值得一提的是一个特定的过滤器像'“* .txt”'破坏了这个设置。它需要或者没有设置,或者设置为任何东西('“*。*”') – user3185569