2013-07-15 3 views
1

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

+1

Обработчики событий называются синхронно, поэтому они «закончены», когда путь кода возвращается к вызывающему. –

+0

@AdamHouldsworth Что вы имеете в виду ?! Я не знаком с обработчиками событий в C#, но не является сущностью обработчика событий, что вызывающее действие, вызывающее событие, завершается первым, и инициированное действие запускается после (или в отдельном потоке) –

+0

Укажите состояние какой-то простой код, объясняющий ваш вопрос, TruthOf42 –

ответ

2

Если нет какой-либо многопоточность профессиональней в призыве цепи, просто вызовите обработчик события Funciton в конце первого:

public void HandlingEvent(...) { 

    //do some stuff 


    RaiseAnotherEventHandler(); 

} 
+0

Это то, что я закончил делать, но я надеялся, что есть более простой способ, чем создать новый обработчик событий. Ну что ж – TruthOf42

0

обработчики событий ничего, кроме многоадресных делегатов с типом возвращаемого несостоявшимся. Внутри он реализует шаблон Observer, и сообщение передается всем подписчикам, когда событие вызывается/возбуждается уведомляющим событием. В принципе, уведомитель событий не беспокоится о том, что происходит со стороны подписчиков, но, если есть какие-либо исключения, произошедшие у подписчика и, а не обрабатываемые, тогда исключение повторно передается уведомлению. Поэтому, если вы включаете свое событие, вызывающее/поднимающее код в блоке try/catch, и если ваш код создания/вызова события выполняется без каких-либо исключений, то это означает, что все обработчики/подписчики событий выполняются и выполнение события завершено.

Смежные вопросы