FileSystemWatcher失败,有1000个文件创建

我正在使用FileSystemWatcher监视文件夹A.如果创建文件或将文件复制到该文件夹​​,它将被移动到文件夹B.

我通过右键单击选择“新建”,选择“文本文档”,在文件夹A中创建了一个文件。 文件立即移动到文件夹B. 但是如果我使用程序在文件夹A中创建1000个文件,那么它们就不会移动到文件夹B.因为看起来FileSystemWatcher无法检测到1000个文件是由程序创建的。

有人能为我解释一下吗?

看起来1000个文件将超出FileSystemWatcher的缓冲区。 这里有很好的解释

链接摘录:

缓冲区大小和错误事件

FileSystemWatcher类通过捕获所有相关文件和较旧的更改并将它们放入缓冲区来工作。 然后,一次处理一次,直到处理完所有通知并且缓冲区为空。 默认情况下,内部缓冲区的大小为8千字节(8192字节)。 每个事件最多可占用缓冲区的16个字节,不包括文件名。 这意味着当在短时间内发生很多变化时,缓冲区很快就会过载并且通知可能会丢失。

从FileSystemWatcher处理正确的错误事件将允许您编写这种可能性的代码。 例如,使用您自己的逻辑检查和/或操作错误事件的文件夹…