11Dec
25
2008
0

FileSystemWatcher

System.IO.FileSystemWatcher

首先,使用FileSystemWatcher的时候最常遇到的问题是一个动作触发多次事件.解决方案在这里有FileSystemWatcher(也包含了FileSystemWatcher常用设置和特性)

接下来遇到的问题是,比如监控的是目录A,然后目录A被修改了名字(注意FileSystemWatcher监控的是目录A的内部而不是目录A本身)
所以,目录A即时改变名称叫目录B,监控继续,而且得到的路径仍然是目录A而不是目录A
当然,真实情况下,这些被监视目录几乎是不会变化的...所以问题不大

监控过程中如果把目录A删掉,没问题,然后重建目录A,也没问题
但是对于FileSystemWatcher来说它监视的那个目录A已经消失了...新建的目录A中的变化,它毫不在乎
在本地,问题也不大,因为没人会去删它
但是目录A本身是个远程共享目录...远程机器一关一开...程序就再也抓不到目录A的变化了...即使它回来了...

问题就是...我要怎么捉到被监控的目录它本身的变化呢...
如果我要再写个线程去时不时的判断目录A是否还存在,这可以解决改名的问题,但是删除后重建的问题还在
而且显然,既然都用线程去定时看目录A本身了,不如就用线程去监视目录A的所有变化吧,这样后边一个问题也就自动解决啦

可是,起个线程不停的监视目录变化不是很费?虽然据说FileSystemWatcher内部也是用个线程不停的查看指定目录的变化
但也应该比我自己实现的好吧...

继续寻找解决办法中

Category: C# | Tags:

© is-Programmer.com All rights reserved. | Power by Chito 1.1.4 | Theme: Aeros 2.0 by TheBuckmaker.com