Как отслеживать изменения в файлах в системе Windows в С# с помощью файловой системы наблюдателя

В настоящее время я использую класс filesystemwatcher для наблюдения за изменениями файлов. Но в моем случае у меня есть миллионы файлов в разных местах в системе, поэтому мне нужно создать миллионы экземпляров класса fileststemwatcher, который вызывает проблемы с производительностью.

Скажите, пожалуйста, как я могу максимизировать производительность или есть другой способ контролировать все файлы в С#.


person Pawan Agrawal    schedule 26.06.2012    source источник
comment
Очевидный вопрос: используете ли вы свойство IncludeSubdirectories?   -  person SteveCav    schedule 26.06.2012
comment
Почему вам нужно создавать миллионы экземпляров классов fsw? Используете ли вы функцию IncludeSubdirectories и фильтрацию имен файлов?   -  person Larry    schedule 26.06.2012


Ответы (1)


FileSystemWatcher — это обычный способ. Я предлагаю вам следить за файлами на более высоком уровне - например. все изменения на уровне диска, и реагировать только на те, которые есть в интересующих вас папках.

Например, когда вы получаете событие «Changed», вы можете проверить свойство FullPath в FileSystemEventArgs, которое передается вашему обработчику событий.

И я предполагаю, что вы уже смотрите на уровне папок, а не отдельных файлов.

person Michael    schedule 26.06.2012
comment
Если я буду смотреть все изменения на уровне драйва, то есть шанс получить более необычное измененное событие. потому что, например, если я отслеживаю диск C:, то у них много процессов, которые постоянно изменяют некоторые файлы, такие как (файл журнала), в этом случае это не вызовет никаких проблем с производительностью. - person Pawan Agrawal; 26.06.2012