★★★★★是微软太龌龊,还是我的方法有问题,关于FileSystemWatcher的使用,路过的高人请进来指点一二。★★★★★
我用一个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