Диалоговое окно необработанного исключения Windows Forms

Я хочу получить Значение по умолчанию Диалоговое окно Необработанного исключения Windows Forms каждый раз, когда мое приложение C# встречается с U-E. В по сравнению с 2005, когда я выключаю Отладку монеты в пять центов в app.conf как это:

<configuration>
   <system.windows.forms jitDebugging="false" />
<configuration>

приложение ведет себя правильно и показывает Windows Forms, которые диалоговое окно значения по умолчанию U-E, с Продолжают, Выход, стек вызовов и так далее.

Однако в по сравнению с 2008, на той же машине или отличающийся, даже при том, что я diable монета в пять центов я все еще получаю Диалоговое окно Необработанного исключения.NET По умолчанию с Отладкой, Отправляют Отчет и не Делают кнопок Send.

Как я могу сделать мой по сравнению с действием приложения 2008 года как то, в котором я делаю по сравнению с 2005 к диалоговому окну Forms U-E витрин?

Не рекомендуйте использовать

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

просто, потому что я не использую пользовательский обработчик в моем по сравнению с проектом 2005 года, почему я использовал бы в по сравнению с 2008? Я хочу позволить этому заданию сделать CLR.

Любая справка ценится

5
задан Pablo 13 April 2010 в 12:05
поделиться

2 ответа

Вы говорите о различных функциях обработки исключений. ThreadExceptionDialog, который вы видите с кнопками Quit и Continue, вызывается событием Application.ThreadException. Оно появляется только в том случае, если исключение происходит в потоке пользовательского интерфейса, когда обработчик события, запущенный в ответ на сообщение Windows, выбрасывает исключение. Однако любое исключение в рабочем потоке приведет к взрыву программы через AppDomain.UnhandledException.

Если вы не можете обработать последнее исключение, программа мертва и не может быть продолжена. Отображение ThreadExceptionDialog бессмысленно.

Вы можете заставить программу постоянно взрываться, отключив событие ThreadException вызовом Application.SetUnhandledExceptionMode(). Теперь каждое необработанное исключение будет вызывать AppDomain.UnhandledException и завершать программу. Возможно, это не то, чего вы хотите, но это разумный выбор.

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

14
ответ дан 18 December 2019 в 13:12
поделиться

Ответ Ханса Пассанта кажется разумным. Однако, даже если вы говорите, что не хотите, я все же рекомендую обработчик для AppDomain.CurrentDomain.UnhandledException , чтобы убедиться, что вы определяете, что происходит, когда ваше приложение неожиданно аварийно завершает работу.

0
ответ дан 18 December 2019 в 13:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: