FileSystemWatcher失败,有1000个文件创建

Lin*_*inh 5 .net c# file-io .net-4.0

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

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

有人能为我解释一下吗?

Pau*_*sik 15

看起来1000个文件将超出FileSystemWatcher的缓冲区.大在这里的解释.

链接摘录:

缓冲区大小和错误事件

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

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