У меня проблема с моим FileSystemWatcher.
У меня есть приложение, которое должно отслеживать большое, действительно большое количество файлов, созданных в папке за короткий промежуток времени.
Когда я начинаю его разрабатывать, яЯ понимаю, что многие файлы не были уведомлены, если размер моего буфера был меньше 64 КБ, что Microsoft рекомендует.Я пытался увеличить размер буфера до этого, пока не достиг значения, которое у меня работает, которое составляет 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);
И что Microsoft говорит по этому поводу в .NET 2.0:
Увеличение размера буфера обходится дорого, поскольку оно приходитиз не выгружаемой памяти, которая не может быть выгружена на диск, поэтому сохраняйте буфер как можно меньше.Чтобы избежать переполнения буфера, используйте свойства NotifyFilter и IncludeSubdirectories для фильтрации нежелательных уведомлений об изменениях.ссылка: FileSystemWatcher.InternalBufferSize Свойство