2010-10-31 5 views
1

Я бы хотел показать форму (в форме есть поле, в котором вы вводите то, что вы делали, чтобы произошла ошибка, и т. Д., И кнопку отправки, чтобы сообщить об ошибке моей сайт), когда возникает необработанное исключение. Как и сейчас, появляется форма, но ни один из элементов управления не рисует (все они белые), а затем я получаю «Yaya.exe перестает отвечать бла-бла-бла».Запуск формы при возникновении исключения

Есть ли способ сохранить форму, пока исключение происходит в основном потоке? Я пробовал помещать форму в ее собственный поток и до сих пор не помогал. Исключением, с которым я тестирую это, является кнопка, которая запускает фонового рабочего, я продолжаю нажимать ее до тех пор, пока она не выберет исключение, которое запустит форму, которая запустит форму.

ответ

2

Вы можете обернуть содержимое вашего метода main() в блок try/catch , Покажите свою форму сообщения об ошибках, запишите, что вам нужно, и т. Д., А затем умрите.

Это хорошая практика. На самом деле пользователь чувствует, что немного лучше быть представленным чем-то, что признает проблему, а не просто сбой. Конечно, я говорю немного лучше, сбои сосут независимо.

+0

Actualy, вы не можете перенести главную. Вы имеете в виду, что это содержимое. –

+0

Извините, да, исправлено. –

+0

Это не работает из коробки. В контуре сообщений есть обработчик исключений по умолчанию, не позволяющий ему когда-либо попасть в предложение catch в Main(). Вызывается Application.ThreadException. WPF имеет очень похожий подход, Dispatcher.UnhandledException. И, конечно, он не может обрабатывать исключения, возникающие в рабочих потоках. –

1

Существует некоторая информация о глобальных обработчиков исключений здесь:

Uncatchable .NET runtime 2.0 error - user machine - what next?

В принципе, вы должны зарегистрировать два события, одно за AppDomain исключений, и другие за исключением резьбы, а затем реализовать обработчики для них.

+0

Вот как я его настроил, и обработчики запускают форму сообщения об ошибке, которая не отображается. – Contra

+0

Хм, что ты делаешь в своем фоном? Если элементы управления не отображаются, может возникнуть проблема с тем, что насос сообщений больше не работает. –

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