访问文件会引发更改事件

时间:2012-09-19 03:00:58

标签: c# .net c#-4.0 c#-2.0

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

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

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

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

我希望在应用程序2启动时摆脱应用程序1中的更改​​事件。

过滤器是否不正确或者更改事件是否有问题?

1 个答案:

答案 0 :(得分:1)

此行为为documented

  

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

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

例如,既然你知道发生了什么,你可以保留last write time的缓存,并决定忽略该事件,如果没有改变。