【问题标题】:Can FileSystemWatcher work OFFLINE?FileSystemWatcher 可以离线工作吗?
【发布时间】:2012-12-10 09:43:57
【问题描述】:

我编写了一个应用程序,它需要监视对 在用户连接到网络时同步脱机文件夹。 我使用了 FileSystemWatcher,它在用户使用时运行良好 连接到网络,但是一旦它们处于离线状态 FileSystemWatcher 停止接收任何事件。

我找不到任何关于离线文件系统事件的文档 文件夹,有人有这方面的经验吗?

谢谢

【问题讨论】:

  • 我认为没有。 Native API 看起来很稀疏,任何 .NET 控件都需要本地 API 才能调用。当然,您在离线使用文件时,实际上并没有更改原始位置的文件 - 可能存在同步冲突。
  • @Damien 谢谢,你有关于“同步框架”的想法吗..你建议用户使用它以获得离线支持..
  • 我不确定您总体上要达到什么目标,所以我不确定您需要什么指导。如果这是您试图解决的更大问题的一部分,那么如果您询问有关整体问题的问题,以及您当前(失效的)解决方案如何适应它,我们可能会做得更好。
  • 在存储副本的本地文件夹上设置监视。如果您不知道该本地文件夹的位置,请咨询 superuser.com。
  • 您应该可以通过 Sync Framework msdn.microsoft.com/en-us/sync/bb887623.aspx 使用 DetectChangesOnFileSystemReplica 方法来执行此操作。

标签: c# wpf filesystemwatcher


【解决方案1】:

http://www.codeproject.com/Articles/15656/Advanced-FileSystemWatcher

  • 两个新的公共事件:NetworkPathAvailable 和 NetworkPathUnavailable。在代码中,用户将查看这些事件以确定网络路径是否可用,代码可以采取适当的措施继续工作,或者优雅地死掉。*

【讨论】:

    【解决方案2】:

    当用户脱机时,FileSystemWatcher 会捕获 Win32Error,并显示一条错误消息,指出“指定的网络名称不再可用”。这可以在 FileSystemWatcher.Error 事件中检测到。

    此异常还具有将属性 EnableRaisingEvents 更改为 false 的效果。一旦用户重新上线,再次将其设置为 true,您将再次收到通知。不幸的是,您不会收到有关用户离线时发生的情况的通知。

    所以你的问题的最终答案是否定的,FileSystemWatcher 不处理离线文件通知。

    【讨论】:

      猜你喜欢
      • 2015-05-11
      • 2016-06-06
      • 2019-12-18
      • 1970-01-01
      • 2016-10-25
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多