【发布时间】:2012-03-16 14:55:26
【问题描述】:
我的 FileSystemWatcher 有问题。
我的应用程序需要在短时间内监控文件夹中创建的大量文件。
当我开始开发它时,我意识到很多文件没有得到通知,如果我的缓冲区小于 64kb,这是微软推荐的。我尝试增加缓冲区大小,直到达到适合我的值,即 2621440 字节!
对于这种情况,您有什么建议使用小尺寸的,或者缓冲区的理想尺寸是多少?
我的示例代码:
WATCHER = new FileSystemWatcher(SignerDocument.UnsignedPath, "*.pdf");
WATCHER.InternalBufferSize = 2621440; //Great and expensive buffer 2.5mb size!
WATCHER.IncludeSubdirectories = true;
WATCHER.EnableRaisingEvents = true;
WATCHER.Created += new FileSystemEventHandler(watcher_Created);
WATCHER.Renamed += new RenamedEventHandler(watcher_Renamed);
以及微软在 .NET 2.0 中对此的评价:
增加缓冲区大小是昂贵的,因为它来自非分页内存 不能换出到磁盘,所以保持缓冲区尽可能小 可能的。为避免缓冲区溢出,请使用 NotifyFilter 和 IncludeSubdirectories 属性以过滤掉不需要的更改 通知。 链接:FileSystemWatcher.InternalBufferSize Property
【问题讨论】:
标签: c# buffer filesystemwatcher