我有两个应用程序引用相同的xml文件。一个写入文件,其他监视器更改文件。
在应用程序1中,我使用FileSystemWatcher监视更改,将过滤器应用为LastWrite并仅监视更改事件。它在后台持续运行
应用程序2在启动时读取文件中的特定节点,并在用户方向上更新节点。它是一个简单的窗体,在执行时从文件中读取值,并具有更改该值的功能
运行这两个应用程序时遇到的奇怪的事情是,当应用程序2启动时,应用程序1中引发了文件更改事件(注意:应用程序1不断监视文件)
我希望在应用程序2启动时摆脱应用程序1中的更改事件。
过滤器是否不正确或者更改事件是否有问题?
答案 0 :(得分:1)
此行为为documented:
当对系统大小进行更改时,会引发
Changed event
属性,上次写入时间,上次访问时间或安全权限 正在监视的目录中的文件或目录。
如果应用程序2打开文件并且操作系统跟踪上次访问时间,则会引发Changed
事件。由于无法仅过滤那些实际将数据写入文件的事件,因此必须通过在应用程序1上保持状态来确定发生了什么。
例如,既然你知道发生了什么,你可以保留last write time的缓存,并决定忽略该事件,如果没有改变。