使用.NET框架监视目录中文件更改的可靠方法

Chr*_*rre 5 .net c# filesystemwatcher polling

我正在寻找一种可靠的方法来查找目录中的更改.

我尝试过使用FileSystemWatcher,但是当创建,更改或删除许多小文件时,它是相当不准确的.它错过了我测试中大约1%或2%的文件.当您快速添加或更改数千个文件时,这是非常重要的.

我已尝试以500毫秒,2000毫秒等不同时间间隔进行轮询更改.在这种情况下,我获得了太多的点击.这可能与FileInfo对象上的时间戳分辨率有关.

所以我的问题是; 是否可以使用.NET Framework可靠地获取对目录的更改?

- 基督徒

san*_*oIT 7

您是否尝试过增加InternalBufferSize?你有多大的尺寸?

来自MSDN:


请注意,当超出缓冲区大小时,FileSystemWatcher可能会错过事件.要避免丢失事件,请遵循以下准则:通过设置InternalBufferSize属性来增加缓冲区大小.避免观看具有长文件名的文件,因为长文件名有助于填充缓冲区.考虑使用较短的名称重命名这些文件.


保持事件处理代码尽可能短.