Надежный способ мониторинга изменений файлов в каталоге с использованием платформы .NET.

Я ищу надежный способ поиска изменений в каталоге.

Я пытался использовать FileSystemWatcher, но это довольно неточно, когда создается, изменяется или удаляется много маленьких файлов. В моих тестах он пропускает около 1 или 2% файлов. Это довольно много, когда вы быстро добавляете или изменяете тысячи файлов.

Я пробовал опрашивать изменения с разными интервалами: 500 мс, 2000 мс и т. д. В этом случае я получаю слишком много обращений. Это может иметь какое-то отношение к разрешению временных меток в объекте FileInfo.

Итак, мой вопрос; возможно ли, используя .NET Framework, надежно получить изменения в каталоге?

-- Кристиан


person Christian Sparre    schedule 31.01.2011    source источник


Ответы (1)


Вы пытались увеличить InternalBufferSize? Какой размер вы поставили?

Из MSDN:


Обратите внимание, что FileSystemWatcher может пропустить событие при превышении размера буфера. Чтобы избежать пропуска событий, следуйте этим рекомендациям: Увеличьте размер буфера, задав свойство InternalBufferSize. Избегайте просмотра файлов с длинными именами файлов, поскольку длинное имя файла способствует заполнению буфера. Попробуйте переименовать эти файлы, используя более короткие имена.


Старайтесь, чтобы ваш код обработки событий был как можно короче.

person santiagoIT    schedule 31.01.2011
comment
Спасибо, это, кажется, решает мои проблемы на данный момент. Не удается заставить его пропускать файлы с буфером 64 КБ, необходимо провести еще несколько тестов, чтобы найти оптимальные настройки. - person Christian Sparre; 31.01.2011