日期:2014-05-19  浏览次数:20843 次

FileSystemWatcher的问题,请高手帮助
我用   FileSystemWatcher   检测文件是否更新.代码如下
  FileSystemWatcher   fsw   =   new   FileSystemWatcher();
  fsw.Path   =   @ "F:\Self\documents ";
  fsw.NotifyFilter   =   NotifyFilters.LastAccess   |   NotifyFilters.LastWrite   |   NotifyFilters.FileName   |   NotifyFilters.DirectoryName;
  fsw.Filter   =   "*.htm ";
  fsw.Changed   +=   new   FileSystemEventHandler(fsw_Changed);

  fsw.EnableRaisingEvents   =   true;


static   void   fsw_Changed(object   sender,   FileSystemEventArgs   e)
{
      Console.WriteLine( "文件 "   +   e.Name   +   "已改变 ");
}

为什么总是输出两次结果,而且当我选中F:\Self\documents下的某个htm文件时,他就算一次更新,这是不是vs的bug呀.还有如果我在判断cpu的利用率小于10%时在执行检测的话,出现更多.

------解决方案--------------------
fsw.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;

你的modifier的 问题,如果修改的话,它既是一次lastaccess,也是一次lastwrite所以会修改两次
更具体的可以去网上查找,有人总结过
------解决方案--------------------
up
------解决方案--------------------
应该是ms的问题
------解决方案--------------------
一个群的 帮你顶 -0-
------解决方案--------------------
需要对触发的事件进行过滤

fsw.NotifyFilter = NotifyFilters.FileName | NotifyFilters.Attributes;
fsw.Changed += new FileSystemEventHandler(fsWatcher_Changed);

------解决方案--------------------
http://topic.csdn.net/t/20061017/11/5087860.html,这个是在网上搜的,不知道对你有没有帮助