Prism: обработка исключений? - PullRequest
1 голос
/ 23 февраля 2010

Я получаю странный результат в обработчике составного события в приложении Prism, которое я пишу.Я создал обработчик событий и вставил оператор исключения, чтобы убедиться, что вызывается обработчик:

public void OnDateSelected(DateTime selectedDate)
{
    // Temporary code
    throw new ApplicationException("Not implemented yet.");
}

Я запускаю приложение и вызываю событие.Вызывается обработчик события, но исключение не останавливает выполнение.Он записывается в окно вывода, и приложение выходит из обработчика, но выполнение продолжается.В поле зрения нет ни одного блока try-catch, так почему же исключение не прерывает выполнение?Спасибо.

1 Ответ

5 голосов
/ 21 декабря 2010

Мы выяснили проблему здесь. Мы используем v2.2 библиотек призмы. В классе BackgroundEventSubscription, когда событие публикуется, создается и вызывается фоновый работник. Делегат RunWorkerCompleted никогда не обрабатывается, поэтому исключения нигде не обрабатываются. Библиотека призмы также не дает конечному пользователю простой способ применить свой собственный делегат в этой версии. Решение состоит в том, чтобы либо скомпилировать свой собственный набор библиотек и использовать пул потоков (это то, что мы сделали), либо переопределить подписку вашего собственного класса CompositePresentationEvent и использовать собственный класс подписки на события, который делает то, что вам нужно.

Библиотеки prism v4 решили эту проблему, так как используют пул потоков, поэтому любые необработанные исключения будут пузыриться в обработчике необработанных исключений домена (если вы его указали).

Спасибо.

...