日期:2014-05-19  浏览次数:20952 次

文件监控的一点问题,请帮忙!!!!
我用FileSystemWatcher做了一个实时监控文件夹的操作,如监控c:\windows.
启动以后我在本机做了一下测试,在文件夹内新增,删除文件等操作时,发现CPU利用率很高。占到50%,请问会是什么方面的问题呢?可是当我结束explorer进程,再启动一个explorer,不去打开文件夹的时候,CPU都很正常!请问,这会是什么方面的问题?

------解决方案--------------------
FileSystemWatcher事实上是windows API的封装而已。

比较根本的替代办法就是写一个disk driver,这样在捕捉到文件操作后可以执行你的操作——不过driver不是很好写的。
------解决方案--------------------
FileSystemWatcher组件完全是相同功能API的封装,当你打开监视的目录时,FileSystemWatcher会对其实时检测。此类现象正如你打开了一个目录窗口(如:c:\test),然后在cmd.exe中使用mkdir newFolder后,目录窗口会自动出现新建的目录。

windows同样使用监视技术,建议使用FileSystemWatcher时,对目标目录进行大量操作时不要打开正在监视的目录。

如果有可能,自已用API实现监视,要比FileSystemWatcher占用更少的资源。
------解决方案--------------------
但我的测试 CPU实际上没有怎么明显变化

不过我设置了 监视过滤条件
例如 watcher.NotifyFilter = NotifyFilters.LastAccess;
------解决方案--------------------
你的监视程序的代码发来看看。