添加文件夹时FileWatcher未触发事件
我使用FileSystemWatcher在文件夹内容更改时获取事件。当我添加,删除或重命名文件时,我已经成功地监视了事件,但是当我正在观看的目录内创建新文件夹时,未触发该事件。添加文件夹时FileWatcher未触发事件
我曾尝试与下列事件:
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.Size | NotifyFilters.Attributes;
我还设置了以下两个属性是true
,虽然它并没有帮助
watcher.EnableRaisingEvents = true;
watcher.IncludeSubdirectories = true;
这是可以做到与FileSystemWatcher
还是我需要使用别的东西?
感谢
您还没有包括目录
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讲述获取或设置过滤器字符串,用于确定在目录中监视哪些文件。
我相信枚举元素:'NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.Size | NotifyFilters.Attributes'工作的文件夹或文件,无论您是否使用'NotifyFilters.DirectoryName' – Ash
@AshwinNair这是不正确的。你必须包括'NotifyFilters.DirectoryName' – user3185569
@rene值得一提的是一个特定的过滤器像'“* .txt”'破坏了这个设置。它需要或者没有设置,或者设置为任何东西('“*。*”') – user3185569
您是否尝试过使用'NotifyFilters.DirectoryName'? – smoksnes
可能是因为你在代码中的任何地方使用了'watch.Filter'? – Fratyx