【问题标题】:FileSystemWatcher detects continuous changeFileSystemWatcher 检测到持续变化
【发布时间】:2016-02-24 13:13:06
【问题描述】:

我正在使用 FileSystemWatcher 来检测文件中的更改 - 我监视目录,然后查看通过事件 args 传入的文件是否与我感兴趣的文件匹配。

我们有一个客户的情况,更改事件不断被触发,但是当我检查修改日期时,没有任何变化。

这给我们带来了各种各样的问题。在对事件采取行动之前,我可以(而且我正在)检查上次修改日期是否已更改。

我无法轻松调试它,因为我无法重现它,尽管我可以在客户端机器上进行调试构建 - 尽管有时它会停止发生。

但我想知道是否有我可以防止此问题的已知原因。

[编辑] 我最初并没有添加它,因为我很确定它不相关,但是以前版本的代码 对相关文件进行了很多更改,更多比我们可以在代码中处理。但是当前版本没有这个问题,并且机器已经重置,所以我无法想象它会导致当前的问题。

【问题讨论】:

    标签: c# .net filesystemwatcher


    【解决方案1】:

    可能正在发生其他更改事件,例如文件属性或安全 ACL 修改。看看通知过滤器:

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

    您可以将其设置为过滤器以仅包含您想要的更改。在这种情况下,听起来您只需要修改写入时间。您可以将其分配给观察者的NotifyFilter 属性。

    很难说出您的确切情况发生了什么,但文件属性可能正在更改(例如,通过索引器)或某些此类后台进程。这些修改可能不会导致上次写入时间的更改,但仍可能导致观察者触发。

    【讨论】:

    • 这是个好主意,我自己也曾想过类似的事情。然而,默认的通知过滤器是 LastWrite、FileName 和 DirectoryName,所以不应该这样。
    • 无赖@DaleBurrell,我没有别的了:(我已经在几千个工作站上部署了基于观察者的代码,没有任何类似的弹出。你试过把procmon放在有问题的机器上吗?看看有没有其他东西在触及文件?technet.microsoft.com/en-us/sysinternals/processmonitor.aspx
    • 访问机器并不容易......而且我的一部分仍然认为这一定是我所做的......所以很高兴知道没有任何已知问题:)我会把这个问题留几天,看看有没有其他人要补充的。
    • 我已经给了你答案,因为它是我能想到的最有可能的事情......尽管我从未深入了解它。某些东西可能正在修改文件的某些内容,无论是病毒扫描程序还是其他。
    猜你喜欢
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多