Отсоединение событий, не работающих с FileSystemWatcher - PullRequest
0 голосов
/ 16 августа 2011

У меня есть приложение, которое использует FileSystemWatcher для отслеживания изменений в файлах. Проблема в том, что когда он ловит эти события, ему нужно вносить изменения в эти документы (обновлять ссылки), и это, конечно, вызывает события снова, бросая приложение в цикл.

Итак, я попробовал это:

    UnWireEvents(); //Turn off the events while updating the documents
            ChangeAllLinks();
            WireEvents(); //Turn the events back on 

   private void WireEvents()
            {
                _monitor.FileChanged += new EventHandler(_monitor_FileChanged);
            }

            private void UnWireEvents()
            {
                _monitor.FileChanged -= new EventHandler(_monitor_FileChanged);
            }

Но, похоже, это не работает, приложение все еще зацикливается. Так почему же это не работает, и что мне нужно делать вместо этого?

1 Ответ

1 голос
/ 16 августа 2011

Вместо отцепления вашего обработчика событий вы можете установить свойство EnableRaisingEvents класса FileSystemWatcher в значение false отключение всех событий Создать / Переименовать / Удалить / Изменить. После того, как вы изменили свои ссылки, просто включите FileSystemWatcher установив EnableRaisingEvents в значение true.

...