【问题标题】:FileSystemWatcher and DFSRFileSystemWatcher 和 DFSR
【发布时间】:2013-12-06 00:21:16
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# .net windows filesystemwatcher


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      多年来,FileSystemWatcher 一直存在问题。我最终制作了将FileSystemWatcher 与轮询选项合并的东西,这样FileSystemWatcher 不会因为某种原因而无法接收的事件不会完全丢失:https://github.com/phatboyg/Magnum/tree/d73a9be8f53e03132614e5787c6b3bfcc875ed09/src/Magnum/FileSystem

      我们会在网络上遇到问题,有时如果共享位于 SAN 上,或者通常只是随机地 FileSystemWatcher 会完全停止。从来没有弄清楚,因此上述解决方法。

      【讨论】:

      • 感谢您的回答特拉维斯,我没有尝试您的代码,因为我的时间不多了。但我会赞成,因为理论上这可以取代 FileSystemWatcher。
      猜你喜欢
      • 2014-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 2016-12-19
      • 1970-01-01
      相关资源
      最近更新 更多