У меня есть необработанный обработчик исключений.Он показывает приятный графический интерфейс и позволяет пользователям отправлять отчет об ошибках.Пользователи могут даже оставить свое имя, номер телефона и другие вещи, и наша служба поддержки перезвонит им.Хорошо работает, хорошо выглядит, делает клиентов менее злыми.В любом случае, теоретически.
Проблема в том, что мое приложение использует фоновые потоки, и потоки, кажется, не заботятся о том, было ли создано исключение, скажем, в потоке GUI (что имеет смысл), ипродолжить свою работу.В конечном итоге это приводит к появлению диалогового окна WER, если пользователь позволяет моему окну обработчика пользовательских исключений оставаться открытым достаточно долго, что делает его похожим на сбой самого обработчика ошибок.
У меня нет доступа к объектам потока вобласть обработчика исключений, поэтому я не могу их приостановить.Создание объектов потока глобально доступным также не является решением.Мой обходной путь на данный момент - использовать что-то вроде Globals.Crashed = true;
в моем обработчике исключений, и чтобы мои методы потока проверяли это свойство на каждой итерации цикла.Не идеально, но минимизирует урон.
Кто-нибудь знает менее хакерский метод?Мой подход неверен?Нужно ли делать это так, как это делает WER, и запускать внешнюю программу, которая приостанавливает основную программу и отображает интерфейс ошибки?