最近做了个监听文件,抓取数据的工具!
监听代码:
MyFileWatcher fwc = new MyFileWatcher();
                    fwc.Filter = delayCfgList[i].FileNameExp;
                    fwc.IncludeSubdirectories = true;
                    fwc.NotifyFilter = ((NotifyFilters.FileName|NotifyFilters.LastWrite| NotifyFilters.Attributes) );
                 //   NotifyFilters)((NotifyFilters.FileName) | (NotifyFilters.DirectoryName) | (NotifyFilters.CreationTime) | 
                    fwc.Path = delayCfgList[i].ScanPath;
                    if (delayCfgList[i].SanType.ToUpper().Contains("CHANGE"))
                        fwc.Changed += new FileSystemEventHandler(fwc_Created);
现遇到两个重大问题:
1.监听程序每次发现文件改变后,都发现触发了fwc_Created事件两次!就是重复了一次
2.现这个监听程序共监听了4个路径下的文件,但是现在发现一个非常奇怪的问题,就是出现了有时某个路径下的某些文件的改变监听不到的问题。同一个路径下,就只有那些文件的改变监听不到,也不是一直监听不到,但几天下来总有哪几天没有监控到。(每次发现文件改变后,都会去抓取数据,有些可能耗时长,不知道是不是这个影响到了)
求教这都是些什么问题啊。。什么原因啊。。知道的大哥大姐帮下忙,非常重要啊虽然没多少了分。但是没办法,都用光了,谢谢各位大侠的帮忙先了

解决方案 »

  1.   

      MyFileWatcher fwc = new MyFileWatcher();
    fwc.Changed += new FileSystemEventHandler(fwc_Created);每次都new,都fwc.Changed += new FileSystemEventHandler(fwc_Created);??
    多次fwc.Changed += new FileSystemEventHandler(fwc_Created);就会触发多次的!!!MyFileWatcher是你自己写的类??
      

  2.   

    MyFileWatcher是继承自FileSystemWatcher的  
    是因为这个原因fwc.Changed += new FileSystemEventHandler(fwc_Created);就会触发多次的!! 
    触发了多次? 为什么只触发了两次呢
      

  3.   

    你自己封装filesystemwatcher?
    问题一请参考http://www.cnblogs.com/dragon/archive/2008/07/04/filesystemwatcher.html
    问题二是不是你自己在 fwc.Filter = delayCfgList[i].FileNameExp;(*.*为监控所有文件)过滤掉了那些文件
      

  4.   

    我是过滤了。。我只监听了TXT文件,但是那个没监听到的也是TXT文件啊
      

  5.   

    是因为这个原因fwc.Changed += new FileSystemEventHandler(fwc_Created);就会触发多次的!! 
    触发了多次? 为什么只触发了两次呢是不是在fwc_Created中,你有手动修改了文件,又引发了一次啊??