Windows образует необработанный диалог исключения

StackOverflow https://stackoverflow.com/questions/2629306

  •  26-09-2019
  •  | 
  •  

Вопрос

Я хочу получить диалог Exceptore Windows, если я хочу получить диалог Exceptore Windows, когда мои приложения C # приложения UE. В VS 2005, когда я выключаю отладку JIT в App.conf, как это:

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

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

Однако в VS 2008, на одной и той же машине или другой, даже если я не снимаю JIT IT, я все еще получаю диалоговое окно «Неудовлетворено по умолчанию» .NET Unawhand-Exception, с отладкой, отчетом отправляет и не отправляйте кнопки.

Как я могу сделать свое приложение VS 2008, как то, что я делаю в VS 2005, чтобы показать диалоговое окно Windows Forms UE?

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

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

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

Любая помощь ценится

Это было полезно?

Решение

Вы говорите о различных функциях обработки исключений. То ThreadExcectionDialog. Вы видите с помощью кнопок Quit, и продолжение инициируется Application.threadexception Event.. Отказ Он когда-либо появится, только если исключение произойдет в потоке интерфейса UI, когда обработчик событий, который работает в ответ на сообщение Windows, бросает исключение. Любое исключение в рабочей ниве, однако, бомбят программу через appdomain.unhandledexception.

Вы не можете справиться с последним, программа мертва и не может продолжаться. Отображение ThreadExceptionDialog бессмысленно.

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top