C# 文件系统监视程序和DFSR

C# 文件系统监视程序和DFSR,c#,.net,windows,filesystemwatcher,C#,.net,Windows,Filesystemwatcher,我有一个类,它监视正在创建的新文件夹。当我手动复制过去的文件夹时,代码运行良好,但当通过分布式文件系统复制复制文件夹时,filesystemwatcher不会检测到新文件夹。。。有办法解决这个问题吗 我在windows server 2008上运行,windows服务在.net 4.5中运行 我的计划B是用一个任务每秒轮询一次文件夹。但我宁愿坚持使用filesystemwatcher而不是重新发明轮子 profileFolderMonitor = new FileSystemWatcher(pa

我有一个类,它监视正在创建的新文件夹。当我手动复制过去的文件夹时,代码运行良好,但当通过分布式文件系统复制复制文件夹时,filesystemwatcher不会检测到新文件夹。。。有办法解决这个问题吗

我在windows server 2008上运行,windows服务在.net 4.5中运行

我的计划B是用一个任务每秒轮询一次文件夹。但我宁愿坚持使用filesystemwatcher而不是重新发明轮子

profileFolderMonitor = new FileSystemWatcher(path);
profileFolderMonitor.NotifyFilter = NotifyFilters.DirectoryName;
profileFolderMonitor.Error += (sender, args) => Monitor();
profileFolderMonitor.Created += OnFolderCreated;
profileFolderMonitor.EnableRaisingEvents = true;

多年来,我一直在使用
FileSystemWatcher
问题。最后,我制作了一些东西,将
FileSystemWatcher
与轮询选项合并在一起,这样
FileSystemWatcher
由于某种原因无法拾取的事件就不会完全丢失:


我们会在网络中遇到问题,有时如果共享在SAN上,或者只是随机地,文件系统监视程序会完全停止。从来没有弄明白,因此上述解决方法

我选择了一个简单的类来保存当前注册文件/文件夹的状态,有一个循环来验证任何增量(暂停1秒),并在增量发生时更新状态。我通过事件处理程序提交FileSystemEventArgs,就像Microsoft FileSystemWatcher那样,它与我的代码库很好地集成。

谢谢你的回答Travis,我没有尝试你的代码,因为我的时间不多了。但我会投票,因为理论上这可以取代FileSystemWatcher。