FileSystemWatcher и шаблоны проектирования - PullRequest
0 голосов
/ 25 февраля 2012

Я пытаюсь создать приложение, которое следит за множеством каталогов с помощью FileSystemWatcher и уведомляет поисковую систему, если что-то меняется. Должен ли я создать новый FileSystemWatcher для каждого каталога? Должен ли я применить специальный шаблон дизайна? Мне нужна помощь в разработке решения.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 25 февраля 2012

Чтобы минимизировать количество FileSystemWatcher объектов, вы можете использовать свойства класса FileSystemWatcher:

  • IncludeSubdirectories - установите это значение на true, если вы хотите отслеживать каждый отдельный подкаталог в каталоге. Поэтому вместо создания отдельного наблюдателя для каждого дочернего элемента вы будете использовать только один наблюдатель для родительского каталога.
  • NotifyFilter - используйте это, чтобы ограничить область действия просматриваемых файлов (например, если вы хотите обнаружить только изменения в файлах *.txt (или что-то еще, есть много вариантов).
  • InternalBuffer - вы можете настроить это свойство, чтобы найти баланс между многословностью и потреблением памяти.

Если есть определенный ограниченный список папок, за которыми нужно следить, тогда я думаю, что можно использовать отдельный наблюдатель для каждой из них. Сколько папок вы обычно ожидаете отслеживать?

0 голосов
/ 25 февраля 2012

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

Я обнаружил, что расширения RX очень хорошо помогали отфильтровывать то, что мне нужно. На этой странице есть пример. http://www.developerit.com/2010/04/20/reactive-extensions-vs-FileSystemWatcher

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...