我想知道使用 FileSystemWatcher 类查看文件/目录的更改是否会占用大量内存。我正在用 C# 开发一个桌面应用程序,它将在低性能计算机上连续在后台运行,我需要一些方法来检查各种文件是否已更改。我能想到几个解决方案:
- 使用 FileSystemWatcher 监视目录。
- 在经过的时间间隔上运行一个定时线程并手动检查它。
- 每次 actionhandler 线程运行时手动检查(程序偶尔会在一个动作上做一些事情)。
有什么建议么?
谢谢!
坏熊猫
我想知道使用 FileSystemWatcher 类查看文件/目录的更改是否会占用大量内存。我正在用 C# 开发一个桌面应用程序,它将在低性能计算机上连续在后台运行,我需要一些方法来检查各种文件是否已更改。我能想到几个解决方案:
有什么建议么?
谢谢!
坏熊猫
基于事件的总是比使用相同的轮询或产生新线程更有效,因此使用 FileSystemWatcher 是正确的想法。在我看来,使用委托的编程模型也更优雅。
我使用 FileSystemWatcher 类来观察数百个目录中的 *.txt 文件更改,没有性能问题。所以我想这是最好的解决方案。
您想使用FileSystemWatcher。这就是这个对象的设计目的。它已被开发并经过测试以广泛使用。您编写的任何内容都不会受到它所拥有的测试和优化的审查。当你不需要时,没有理由重新发明轮子。
在我目前(全国范围)从事的大型文件传输项目中,FileSystemWatcher 是一种单向选项(对文件锁定、事件队列等进行一些管理)。在使用底层操作系统结构(提供所有这些基于事件的交互)方面,你有很多优势,我认为否则你不会实现如此高效的行为。
我见过一些程序在每次程序重新获得焦点时手动检查文件/目录的更改。如果您的程序满足一些要求,这可能是合适的:
即便如此,FileSystemWatcher
即使在那种情况下也很好。