0

我想知道使用 FileSystemWatcher 类查看文件/目录的更改是否会占用大量内存。我正在用 C# 开发一个桌面应用程序,它将在低性能计算机上连续在后台运行,我需要一些方法来检查各种文件是否已更改。我能想到几个解决方案:

  1. 使用 FileSystemWatcher 监视目录。
  2. 在经过的时间间隔上运行一个定时线程并手动检查它。
  3. 每次 actionhandler 线程运行时手动检查(程序偶尔会在一个动作上做一些事情)。

有什么建议么?

谢谢!

坏熊猫

4

5 回答 5

6

基于事件的总是比使用相同的轮询或产生新线程更有效,因此使用 FileSystemWatcher 是正确的想法。在我看来,使用委托的编程模型也更优雅。

于 2010-06-08T21:31:05.093 回答
3

我使用 FileSystemWatcher 类来观察数百个目录中的 *.txt 文件更改,没有性能问题。所以我想这是最好的解决方案。

于 2010-06-08T21:31:58.930 回答
2

您想使用FileSystemWatcher。这就是这个对象的设计目的。它已被开发并经过测试以广泛使用。您编写的任何内容都不会受到它所拥有的测试和优化的审查。当你不需要时,没有理由重新发明轮子。

于 2010-06-08T21:33:22.563 回答
1

在我目前(全国范围)从事的大型文件传输项目中,FileSystemWatcher 是一种单向选项(对文件锁定、事件队列等进行一些管理)。在使用底层操作系统结构(提供所有这些基于事件的交互)方面,你有很多优势,我认为否则你不会实现如此高效的行为。

于 2010-06-08T21:39:31.970 回答
1

我见过一些程序在每次程序重新获得焦点时手动检查文件/目录的更改。如果您的程序满足一些要求,这可能是合适的:

  1. 您的程序在很长一段时间内处于非活动状态(即处于不需要知道文件更改的状态)是很常见的。
  2. 程序处于活动状态时文件/目录不太可能更改(程序本身除外,它不需要通知)。
  3. 您只关心少量文件。

即便如此,FileSystemWatcher即使在那种情况下也很好。

于 2010-06-08T21:39:40.313 回答