이것은 내 initial question의 후속 조치이며, 필자의 연구 결과를 제시하고 수정, 아이디어 및 통찰력을 요구하고자합니다. 내 연구 결과 (또는 오히려 해석)는 이전 질문에 대한 사람들의 대답에서 왔으며 MSDN .NET 3.5 설명서를 읽고 .NET 3.5 코드를 디버깅했습니다. 응용 프로그램이 종료 될 때이를 탐지하는 방법을 궁금해하는 사람에게 이것이 유용 할 수 있기를 바랍니다.응용 프로그램이 종료 될 때 감지하는 방법?
이벤트 :
System.AppDomain.CurrentDomain.ProcessExit
: 제기 할 때 프로세스가 종료, 예를 들어, 기본값 인AppDomain
이후의 모든 것은 언로드되었습니다 [총 실행 시간은 단 3 초로 제한됩니다!]. WPF의 경우System.Windows.Application.Exit
을 대신 사용하십시오. Windows Forms의 경우 기본 방법으로Application.Run(...)
뒤에 코드를 실행하십시오.System.AppDomain.CurrentDomain.DomainUnload
: 기본값AppDomain
이외의AppDomain
이 언로드 될 때 발생합니다. 단위 테스트 프레임 워크 (TestDriven.NET이있는 MbUnit)로 클래스를 실행할 때.System.AppDomain.CurrentDomain.UnhandledException
은 :. 기본
System.Windows.Application.Exit
: WPF 응용 프로그램 (기본값 :AppDomain
)이 정상적으로 종료 될 때 발생합니다. 이를 활용하려면System.Windows.Application.OnExit
을 재정의하십시오.종결 자 (C#의 소멸자) : 가비지 수집기가 관리되지 않는 리소스를 해제 할 때 실행됩니다. [총 실행 시간은 제한되어 있습니다!] 이벤트의
AppDomain
으로 처리하는 경우 (:)이 스레드의 시작이 의미, 이것은 포괄 모든 처리되지 않은 예외로 사용할 수있는
AppDomain
상관없이, 어떤 스레드에서 처리되지 않은 예외 발생하지.
주문 :
WPF 응용 프로그램 : 우아한 종료
System.Windows.Application.Exit
System.AppDomain.CurrentDomain.ProcessExit
- 종료 자
WPF 응용 프로그램 : 처리되지 않은 예외
System.AppDomain.CurrentDomain.UnhandledException
MbUnit에 TestDriven.NET 내에서 실행 : 통과 시험 (정상 종료)
System.AppDomain.CurrentDomain.DomainUnload
- 종료 자
MbUnit이 TestDriven 내에서 실행됩니다.
- 내 해석/연구 결과가 올바른 위치 : NET :
AppDomain.CurrentDomain.DomainUnload
- 종료 자
질문 (처리되지 않은 예외가 MbUnit에 의해 처리됩니다) 실패 테스트?
- 을 삭제 한 자세한 정보를 알고 계십니까? 예 : 파이널 라이저의 실행 시간은 총 입니까?
- 알고 계신 다른 아이디어/ 아이디어를 알고 계신가요?
- 다른 애플리케이션에서 발생하는 이벤트 및 순서는 무엇입니까? Windows Forms, 웹 서비스, ASP.NET 웹 사이트 등?
그냥 참고 참고/:이 닷넷 3.0 이상에서만 사용할 수 있습니다, 당신이 사용하는 System.Core.dll에 연결해야합니다 .NET 2.0에서 –