日期:2014-05-18  浏览次数:20618 次

请教FileSystemWatcher监控文件遇到的奇怪问题
我要用FileSystemWatcher监控配置文件的内容是否改变,如果改变了就重新加载设置
只使用OnChanged事件,相关代码如下:

fsw.Path = @"C:\";
fsw.Filter = "*.config";
fsw.NotifyFilter = System.IO.NotifyFilters.LastWrite;
fsw.EnableRaisingEvents = true;

发现有一个奇怪的问题:
当监控目录在系统盘下时,修改一次文件只触发一次事件
当监控目录在逻辑盘下时,修改一次文件就会触发两次事件

我用微软给的示例也会有这种情况
哪位大侠知道这是怎么回事吗?谢谢了

------解决方案--------------------
做个记号。。
------解决方案--------------------
没注意过,Up
------解决方案--------------------
微软也不怎么样!
------解决方案--------------------
应该和监控路径没关系。你看看是不是和修改的文件大小有关。太小的可能只触发一次事件

新建文件事件时候也是。据说会3次事件,实际上很小的文件只触发2次

不知道是.net的bug还是文件系统的限制
------解决方案--------------------
引用楼主 jackyc23 的帖子:
我要用FileSystemWatcher监控配置文件的内容是否改变,如果改变了就重新加载设置
只使用OnChanged事件,相关代码如下:

fsw.Path = @"C:\";
fsw.Filter = "*.config";
fsw.NotifyFilter = System.IO.NotifyFilters.LastWrite;
fsw.EnableRaisingEvents = true;

发现有一个奇怪的问题:
当监控目录在系统盘下时,修改一次文件只触发一次事件
当监控目录在逻辑盘下时,修改一次文件就会触发两次事件

我用微…

------解决方案--------------------
你搜一下已经有人解决事件重复触发的事情