Поймать исключение и правильно обработать программу при ее сбое

AppDomain.CurrentDomain.UnhandledException += 
    new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Forms.Application.ThreadException += 
    new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);

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


person pl0xtic    schedule 14.04.2013    source источник
comment
Какое исключение не поймано AppDomain Exception handler? Можете ли вы показать код?   -  person Rohit Vats    schedule 14.04.2013
comment
Когда я закрываю его в отладчике Visual Studio, он оставляет после себя значки на панели задач и другие неутилизированные элементы, которые, я уверен, нельзя будет восстановить позже... Как бы я заставил его правильно завершить работу, я? Я боюсь, что это произойдет и по другой причине, и это может вызвать некоторые проблемы у конечных пользователей, поскольку этого больше нет в отладчике.   -  person pl0xtic    schedule 14.04.2013
comment
когда я закрываю его в отладчике Visual Studio, это исключение или нет? Если вы просто прекратите отладку процесса, конечно, очистка не будет выполнена, поскольку вы фактически прервете процесс.   -  person Zdeslav Vojkovic    schedule 14.04.2013
comment
какую версию .NET Framework вы используете?   -  person Zdeslav Vojkovic    schedule 14.04.2013


Ответы (1)


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

Обработка исключений ОС в среде CLR возможна, но не рекомендуется. См. Можно ли поймать исключение нарушения доступа в .NET? для получения дополнительной информации.

Почти во всех случаях ваш процесс не должен завершаться таким образом, и даже если это произойдет, надлежащая утилизация не требуется, поскольку ОС правильно закроет почти все дескрипторы: файлы, соединения и т. д. годовалая ошибка в проводнике, и вы ничего не можете с этим поделать. Будем надеяться, что однажды Microsoft это исправит.

person Athari    schedule 11.07.2013