我用一个FileSystemWatcher监视一个文件夹。监控文件内容何时发生改变,NotifyFilter属性设置如下:watcher.NotifyFilter = watcher.NotifyFilter | NotifyFilters.FileName | NotifyFilters.LastWrite |   NotifyFilters.DirectoryName ;监视Created,Deleted,Renamed和Changed事件,对于大部分的文件类型,监视是正确的,但是对于一个visio文件,如果我在坚实的文件夹下面打开一个visio文件,编辑后执行 另存为 操作,尽然监视不到Renamed的信息。监视文件夹为D:\TEST2, 把文件绘图4.vsd另存为绘图44.vsd,事件序列如下:2009-05-05 09:25:40 CREATED D:\TEST2\~$$绘图4.~vsd         //创建临时文件
2009-05-05 09:25:40 CHANGED D:\TEST1\~$$绘图4.~vsd        //改变临时文件内容
2009-05-05 09:25:51 CREATED D:\TEST2\绘图44.vsd            //创建另存的文件
2009-05-05 09:25:51 DELETED D:\TEST2\绘图44.vsd            //紧接着又删掉了
2009-05-05 09:25:51 CREATED D:\TEST2\VS09AC.tmp            //创建临时文件
2009-05-05 09:25:51 DELETED D:\TEST2\VS09AC.tmp            //删除临时文件
2009-05-05 09:25:51 CREATED D:\TEST2\绘图44.vsd            //创建另存的文件
2009-05-05 09:25:51 CHANGED D:\TEST1\绘图44.vsd        //改变文件内容
2009-05-05 09:26:02 CHANGED D:\TEST1\绘图44.vsd        //改变文件内容,以下又都是针对一个临时文件的操作,但再没有对另存为的文件进行操作,在本时
                                                                 刻09:26:02,我把  绘图44.vsd 复制出来,和最终的文件内容不一致,根本打不开,下面又根本
                                                                 未监视到针对绘图44.vsd文件操作,这是为什么啊???
2009-05-05 09:26:05 DELETED D:\TEST2\~$$绘图4.~vsd
2009-05-05 09:26:05 CREATED D:\TEST2\~$$绘图44.~vsd
2009-05-05 09:26:05 CHANGED D:\TEST1\~$$绘图44.~vsd
2009-05-05 09:26:09 DELETED D:\TEST2\~$$绘图44.~vsd

解决方案 »

  1.   

    这个问题取决与你打开VSD的程序的程序把. 好象WORD也是.
      

  2.   

    针对word进行另存为操作,可以监视到renamed操作,而visio则没有。为何FileSystemWatcher监视不到visio文件修改文件内容的事件呢?
      

  3.   

    FileSystemWatcher以前也用过,发现对office部分软件的文件操作确实很难监控,后来换了其他方案解决放弃使用FileSystemWatcher。
      

  4.   

    我用watchdirectorychange(c++) 好像微软的没问题吧,
    你处理消息有问题吧,有些事情没考虑全还有temp文件处理方式很多都是这样的 photoshop,ultraedit等等,
    按照消息进入的顺序,正确的处理,应该没问题的
      

  5.   

    可以试试用filemon监测看看结果。
      

  6.   

    可以试试用filemon监测看看结果。
      

  7.   

    可以试试用filemon监测看看结果。
      

  8.   

    这是一个word文件另存为操作的事件序列:2009-05-05 10:04:46 CREATED D:\TEST2\~$aaa.docx
    2009-05-05 10:04:46 CHANGED D:\TEST1\~$aaa.docx
    2009-05-05 10:05:16 CREATED D:\TEST2\bbb.docx
    2009-05-05 10:05:16 CREATED D:\TEST2\~WRD0000.tmp
    2009-05-05 10:05:16 CHANGED D:\TEST1\~WRD0000.tmp
    2009-05-05 10:05:16 RENAMED D:\TEST2\bbb.docx rename to D:\TEST2\~WRL0001.tmp
    2009-05-05 10:05:16 RENAMED D:\TEST2\~WRD0000.tmp rename to D:\TEST2\bbb.docx
    2009-05-05 10:05:16 CREATED D:\TEST2\~$bbb.docx
    2009-05-05 10:05:16 CHANGED D:\TEST1\~$bbb.docx
    2009-05-05 10:05:17 DELETED D:\TEST2\~WRL0001.tmp
    2009-05-05 10:05:17 DELETED D:\TEST2\~$aaa.docx
    2009-05-05 10:05:18 DELETED D:\TEST2\~$bbb.docx
      

  9.   

    请问hotact后来改用了怎么方案。因为我监控到每一个事件后,需要做一些响应的处理。