Я хочу получить Значение по умолчанию Диалоговое окно Необработанного исключения 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.
Любая справка ценится
Вы говорите о различных функциях обработки исключений. ThreadExceptionDialog, который вы видите с кнопками Quit и Continue, вызывается событием Application.ThreadException. Оно появляется только в том случае, если исключение происходит в потоке пользовательского интерфейса, когда обработчик события, запущенный в ответ на сообщение Windows, выбрасывает исключение. Однако любое исключение в рабочем потоке приведет к взрыву программы через AppDomain.UnhandledException.
Если вы не можете обработать последнее исключение, программа мертва и не может быть продолжена. Отображение ThreadExceptionDialog бессмысленно.
Вы можете заставить программу постоянно взрываться, отключив событие ThreadException вызовом Application.SetUnhandledExceptionMode(). Теперь каждое необработанное исключение будет вызывать AppDomain.UnhandledException и завершать программу. Возможно, это не то, чего вы хотите, но это разумный выбор.
Также обратите внимание, что событие ThreadException отключается, когда вы запускаете программу с отладчиком. Предположительно поэтому вы видите разницу в VS2008. В остальном изменений не было.
Ответ Ханса Пассанта кажется разумным. Однако, даже если вы говорите, что не хотите, я все же рекомендую обработчик для AppDomain.CurrentDomain.UnhandledException
, чтобы убедиться, что вы определяете, что происходит, когда ваше приложение неожиданно аварийно завершает работу.