2013-04-14 3 views
2
AppDomain.CurrentDomain.UnhandledException += 
    new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); 
Forms.Application.ThreadException += 
    new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); 

은 비슷한 질문을 잘라내었지만 내 문제를 해결하지 못했습니다. 내가 뭘 하려는지는 충돌을 잡아 내 응용 프로그램을 올바르게 처리하여 메모리 덤프/추적/시스템 트레이 아이콘을 남기지 않아야합니다.예외가 발생하고 프로그램이 제대로 작동하지 않을 때 처리합니다.

+1

어떤 예외가'AppDomain Exception handler'에 의해 잡히지 않습니까? 몇 가지 코드를 보여줄 수 있습니까? –

+0

Visual Studio 디버거에서 닫을 때 시스템 트레이 아이콘과 다른 항목을 남겨두고 나중에 복구 할 수 없다는 것을 알았습니다. 어떻게 강제로 종료해야합니까? 또 다른 원인으로 인해 발생할 것이고 디버거에 없어서 최종 사용자 문제가 발생할 수 있습니다. – pl0xtic

+1

"t는 Visual Studio 디버거에서 닫을 때"예외인가요? 프로세스 디버깅을 중지하면 물론 프로세스를 효과적으로 중단 할 때 정리가 실행되지 않습니다. –

답변

0

디버거 또는 작업 관리자를 사용하여 프로세스를 종료하면 아무런 변화가 없습니다 이 상황을 처리하려면 .NET 응용 프로그램 또는 원시 응용 프로그램이되어야합니다.

CLR에서 OS 예외를 처리 할 수도 있지만 권장되지 않습니다. 자세한 내용은 Is it possible to catch an access violation exception in .NET?을 참조하십시오.

거의 모든 경우에 OS가 파일, 연결 등 거의 모든 핸들을 적절하게 닫으므로 적절한 처분이 필요하지 않습니다. 익스플로러에서 20 년 된 버그이며, 그것에 대해 아무 것도 할 수 없습니다. 언젠가 마이크로 소프트가 고칠 수 있기를 바랍니다.