当许多文件同时添加到目录时,FileSystemWatcher无法正常工作

Hen*_*rik 7 c# filesystemwatcher

当许多文件同时添加到目录时,FileSystemWatcher无法正常工作......

Watcher根本找不到目录中的所有文件 - 只有当文件一个接一个地放在文件夹中时 - 而不是同时将大量文件复制到文件夹中...

Threads的创建是问题的解决方案还是有另一种方法来处理问题?

Joe*_*oey 12

该类文档详细说明了该问题:

Windows操作系统会在FileSystemWatcher创建的缓冲区中通知组件文件更改.如果在短时间内有许多变化,缓冲区可能会溢出.这会导致组件无法跟踪目录中的更改,并且只会提供一揽子通知.使用InternalBufferSize属性增加缓冲区的大小是昂贵的,因为它来自无法换出到磁盘的非分页内存,因此请保持缓冲区尽小但足够大,以免错过任何文件更改事件.要避免缓冲区溢出,请使用NotifyFilterIncludeSubdirectories属性,以便过滤掉不需要的更改通知.

因此,在这种情况下,线程可能对你没什么帮助.您可能希望增加缓冲区大小(但它应该多大可能取决于计算机和磁盘本身的速度)或通过设置适当的过滤器来约束您感兴趣的文件.