2

我过去使用过 FileSystemWatcher。但是,我希望有人可以解释它实际上是如何在幕后工作的。

我计划在我正在制作的应用程序中使用它,它将监视大约 5 个驱动器和可能 300,000 个文件。

FileSystemWatcher 是否真的在驱动器上进行“检查”——例如,它会导致驱动器磨损吗?它还会影响硬盘“睡眠”的能力吗

这是我不明白它是如何工作的 - 如果它就像在计时器上扫描驱动器等......或者它是否在它做任何事情之前等待来自操作系统的某种类型的通知。

我只是不想实现会导致驱动器上的额外读取并阻止驱动器休眠的东西。

4

2 回答 2

5

没有那样的事。文件系统驱动程序仅针对您选择的过滤器监控机器上运行的其他程序请求的正常文件操作。如果有匹配,那么它会向记录操作和文件名的内部缓冲区添加一个条目。它完成了驱动程序请求并获得在您的程序中运行的事件。您将从该缓冲区获得传递给您的操作的详细信息。

因此,操作本身实际上并没有发生任何事情,根本没有额外的磁盘活动。这只是运行的软件。开销很小,没有什么明显减慢。

于 2013-10-08T23:34:51.190 回答
2

最简洁的答案是不。FileSystemWatcher调用API并ReadDirectoryChangesW传递一个异步标志。基本上,当目录发生更改时,Windows 会将数据存储在分配的缓冲区中。此函数返回该缓冲区中的数据FileSystemWatcher并将其转换为您的好通知。

于 2013-10-08T23:34:43.570 回答