【问题标题】:FileSystemWatcher fails with 1000 files creationsFileSystemWatcher 因创建 1000 个文件而失败
【发布时间】:2011-03-13 22:40:41
【问题描述】:

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

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

谁能帮我解释一下?

【问题讨论】:

    标签: c# .net file-io .net-4.0


    【解决方案1】:

    看起来 1000 个文件会溢出 FileSystemWatcher 的缓冲区。太好了explanation here

    链接摘录:

    缓冲区大小和错误事件

    FileSystemWatcher 类的工作原理是 捕获所有相关文件和 较旧的更改并将它们放入 缓冲。然后处理一个 一次更改,直到所有 已处理通知并 缓冲区是空的。默认情况下, 内部缓冲区的大小为 8 千字节(8192 字节)。每个事件都可以 占用缓冲区的 16 个字节 对于它的数据,不包括文件 姓名。这意味着当有一个 在很短的时间内发生了很多变化 时间,缓冲区可以迅速成为 超载和通知可以 丢了。

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

    【讨论】:

    • 谢谢保罗,你是对的。在我增加缓冲区大小后,我的程序就会成功执行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 2022-07-07
    • 2017-07-10
    • 1970-01-01
    相关资源
    最近更新 更多