Поймать необработанное исключение до того, как оно достигнет уровня приложения - PullRequest
1 голос
/ 09 июля 2009

Мы используем Dispatcher для перехвата любых необработанных исключений в нашем приложении WPF. Это определено в нашем файле app.xaml.cs и работает очень хорошо. Однако у нас есть ситуация, когда мы хотим обнаружить и перехватить любые необработанные исключения, которые происходят в конкретном пользовательском элементе управления WPF. Мы хотели бы иметь возможность перехватывать любые необработанные ошибки, связанные с этим элементом управления, до того, как они будут получены и обработаны обработчиком на уровне приложения. Когда мы пытаемся настроить обработчик для диспетчера управления пользователями, необработанная ошибка всегда, кажется, обрабатывается сначала на уровне приложения, а затем на уровне управления пользователем. Даже если мы поместим Handled = True в оба обработчика. Рабочие потоки не используются.

Мы знаем, что можем войти в пользовательский элемент управления и весь код, который он вызывает и настроить, try {} catch {} и генерировать пользовательские исключения, но мы надеялись на более простое решение под ключ.

Есть идеи?

Надеюсь, этот вопрос имеет смысл ..

1 Ответ

2 голосов
/ 10 июля 2009

Не существует такого понятия, как «Диспетчер управления пользователями». В каждом потоке всегда есть не более одного активного диспетчера. Таким образом, порядок обработки ваших обработчиков событий Dispatcher.UnhandledException определяется только порядком их регистрации.

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