C# 硬盘上的FileSystemWatcher有什么影响?

C# 硬盘上的FileSystemWatcher有什么影响?,c#,winforms,filesystemwatcher,C#,Winforms,Filesystemwatcher,我以前使用过FileSystemWatcher。然而,我希望有人能解释它在幕后是如何运作的 我计划在我正在制作的应用程序中使用它,它将监控大约5个驱动器和300000个文件 FileSystemWatcher是否真的对驱动器进行了“检查”——如中所示,它是否会导致驱动器磨损?它还会影响硬盘的“睡眠”能力吗 这就是我不明白它是如何工作的地方-如果它像是在定时器上扫描驱动器等。。。或者如果它在做任何事情之前等待来自操作系统的某种类型的通知 我只是不想实现会在驱动器上造成额外读取并阻止驱动器睡眠的东西

我以前使用过FileSystemWatcher。然而,我希望有人能解释它在幕后是如何运作的

我计划在我正在制作的应用程序中使用它,它将监控大约5个驱动器和300000个文件

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

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


我只是不想实现会在驱动器上造成额外读取并阻止驱动器睡眠的东西。

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

不是这样的。文件系统驱动程序只是根据您选择的筛选器监视计算机上运行的其他程序请求的正常文件操作。如果存在匹配项,则会将一个条目添加到内部缓冲区,以记录操作和文件名。它完成驱动程序请求并获取要在程序中运行的事件。您将获得从该缓冲区传递给您的操作的详细信息


因此,实际上操作本身不会发生任何事情,根本没有额外的磁盘活动。运行的都是软件。开销很小,没有任何东西会明显减慢速度。

+1我一直想知道IO更改通知是如何实现的