文件系统观察器检测连续更改

本文关键字:连续 检测 观察 文件系统 | 更新日期: 2023-09-27 18:35:53

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

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

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

我无法轻松调试它,因为我无法重现它,尽管我可以在客户端计算机上放置调试版本 - 尽管有时它会停止发生。

但我想知道这个问题是否有我可以预防的已知原因。

[编辑] 我最初没有添加这个,因为我很确定它不相关,但是以前版本的代码对有问题的文件进行了大量更改,超出了我们在代码中可以处理的范围。但是,当前版本没有这个问题,从那时起机器已被重置,所以我无法想象它会导致当前问题。

文件系统观察器检测连续更改

可能会

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

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

您可以将其设置为筛选以仅包含所需的更改。在这种情况下,听起来您只需要写入时间修改。可以将其分配给观察程序上的 NotifyFilter 属性。

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