У меня есть приложение, в котором у меня есть обработчик необработанных исключений, чтобы показать пользователю более приятное диалоговое окно и дать им возможность представить отчет об ошибке.Приложение Необработанное исключение с использованием диалога WPF Не работает
У меня изначально появилось диалоговое окно Winforms, и оно работало нормально. Однако я решил обновить его до диалога WPF, чтобы соответствовать всем остальным в приложениях, которые были обновлены до WPF, и это показывает странное поведение.
я первоначально имел
AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf Boom
и в обработчике (МСГ является сконструированным строка сообщения):
Dim d As New Dlg_Boom(msg)
d.ShowDialog()
Me.Shutdown()
Когда я перешел в диалоговое окно WPF, диалоговое окно появляется, но потом я немедленно запустите диалоговое окно окон «Программа перестала работать».
Я также попытался использовать как:
AddHandler Dispatcher.UnhandledException, AddressOf Boom
AddHandler Application.DispatcherUnhandledException, AddressOf Boom
С этим я получаю возможность установить e.Handled = True. Если я оставлю его ложным, я получаю нерабочий диалог, если я установил его в true, он начнет мигать мое диалоговое окно WPF и сразу же закроет его.
Как будто он игнорирует тот факт, что это ShowDialog() и обрабатывает его как Show() и не ждет его возврата. Как ни странно, если я ставлю сообщение непосредственно перед вызовом ShowDialog(), он работает так, как ожидалось, и ждет его возвращения.
Я очень озадачен, у кого есть какие-либо идеи по этому поводу?
Что произойдет, если вы установите точку останова на вызов 'ShowDialog()'? Подождите, пока вы не закроете окно? Исключение исходит из основного потока или фоновой задачи? – vesan
Как заставить его ударить по необработанному коду исключения во время отладки? Каждый раз, когда я пытаюсь, отладчик просто ловит исключение и показывает его мне, не попадая в необработанный код исключения. Если я нажму «Продолжить», он задумается на секунду и вернется к ошибке в отладчике ... Исключение составляет один, который я создал для проверки необработанного кода исключения, и он должен быть в основном потоке. – sfaust