System.IO.FileSytemWatcher 似乎只能监视改动、创建、删除,对于只读再关闭的检测估计是个问题。我有个好的思路,可以绕过这个问题,或者换个角度想问题:兄弟何不试试”通过外部程序(如记事本)打开文件(如001.xml)“的副本?
每次打开前,你将当前文件(如 001.xml)复制到(如 copy_001.xml),然后打开该复制后的文件。如果复制到的文件被占用,就提示用户文件已经打开。至于你对源文件的操作,爱咋弄咋弄,根本不用关注你的查看情况。
不过,如果被其他系统占用(比如你人为占用源文件),更改时设置超时,然后告知更改失败,让用户检查是否被占用等等。