.Net FileWatcher失败~80 +文件

Tig*_*ran 13 .net c#

我正在使用.net 2.0 filewatcher来查看新文件的文件夹.它完美地工作,除非我一次放置超过80个文件.该事件不再触发.好像filewatcher设置为跟踪特定数量的文件.

暂时我已经要求用户不要一次放置超过50个文件,但这似乎有效,但我想修复它,以便可以一次将数百个文件放入文件夹中.

这是我正在使用的代码.这是非常标准的东西,没什么特别的.


FileWatcher = new FileSystemWatcher();
FileWatcher.Path = ConfigurationManager.AppSettings["FolderOfFilesToWatch"];
FileWatcher.NotifyFilter = NotifyFilters.FileName;
FileWatcher.Filter = "*_*_*.*";
FileWatcher.Created += new FileSystemEventHandler(watcher_Created);
FileWatcher.EnableRaisingEvents = true;


static void watcher_Created(object sender, FileSystemEventArgs e)
{
Console.Write(e.Name);
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Ree*_*sey 14

您可能需要增加FileSystemWatcher.InternalBufferSize.默认情况下,FileSystemWatcher使用较小的缓冲区来提高性能,如果在短时间内发生太多更改,则会溢出.

尝试设置更大的缓冲区大小以防止发生这种情况.

  • 只是要非常小心:根据MSDN:"增加缓冲区大小是昂贵的,因为它来自无法换出到磁盘的非分页内存,所以保持缓冲区尽可能小.为了避免缓冲区溢出,请使用NotifyFilter和IncludeSubdirectories属性,用于过滤掉不需要的更改通知." (2认同)