EnableRaisingEvents (включение и отключение) - PullRequest
1 голос
/ 02 сентября 2011

Я поддерживаю некоторый код, который имеет два события FileSystemWatcher, которые затрудняют отладку (и он имеет ошибку).Поэтому моя идея состоит в том, чтобы упростить код, сделав выполнение последовательным.Примерно так:

Main method
    1) normal code here
    2) enable event 1, let it check for files, disable it when it is done running once
    3) enable event 2, let it check for files, disable it when it is done running once

Тогда журналы базы данных будут иметь больше смысла.Я мог бы видеть, какая часть программы, что делает что-то не так.

private void InitializeFileSystemWatcher()
{
    this.MessageMonitor = new FileSystemWatcher(this.MessagePath, this.MessageFilter);
    this.MessageMonitor.IncludeSubdirectories = true; // Recursive.
    this.MessageMonitor.Created += new FileSystemEventHandler(OnMessageReceived);
    this.MessageMonitor.EnableRaisingEvents = true;
}

Из основного я могу установить EnableRaisingEvents = true для EnableRaisingEvents = false.Оба события индексируют файлы в некоторой папке и вводят метод обратного вызова.

Мой вопрос такой: Если событие выполняется в данный момент, и я установил EnableRaisingEvents = false, будет ли оно приостановлено или продолжит выполняться до тех пор, пока оно не будет выполненоКонец?

Если он продолжится, я полагаю, что переменная boR doRUN установлена ​​в начале и в конце события в качестве проверки основного метода.

1 Ответ

1 голос
/ 02 сентября 2011

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

Внутри сообщения OnMessage вы можете получить что-то вроде

public void OnMessageRecieved(Object sender, Events e) //Not the real signature
{
    MessageMonitor.Created -= OnMessageReceived();
    //Do Your things
    OtherMessageMonitor.Created += OnMessageReceived();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...