1

我有两个引用相同 xml 文件的应用程序。一个写入文件,另一个监视文件的更改。

在应用程序 1 中,我使用 FileSystemWatcher 来监视更改,将过滤器应用为 LastWrite 并仅监视更改事件。它在后台连续运行

应用程序 2 在启动时读取文件中的特定节点并在用户方向上更新该节点。它是一个简单的 windows 窗体,在执行时从文件中读取一个值,并且可以更改该值

我在运行这两个应用程序时遇到的奇怪的事情是,当应用程序 2 启动时,在应用程序 1 中引发了文件更改事件(注意:应用程序 1 不断监视文件)

我想在应用程序 2 启动时摆脱应用程序 1 中引发的更改事件。

过滤器是否不正确或 Change 事件的行为令人讨厌?

4

1 回答 1

1

这种行为记录在案

Changed event对被监视目录中的文件或目录的大小、系统属性、上次写入时间、上次访问时间或安全权限进行更改时,将引发 。

如果应用程序 2 打开文件并且操作系统跟踪上次访问时间,Changed则会引发一个事件。由于无法仅过滤那些实际将数据写入文件的事件,因此您必须通过保持应用程序 1 上的状态来确定发生了什么。

例如,现在您知道发生了什么,您可以保留最后一次写入时间的缓存,并决定在没有更改的情况下忽略该事件。

于 2012-09-19T12:57:15.480 回答