2010-12-01 4 views
1

.net 응용 프로그램을 실행하고 해당 응용 프로그램이 자주 충돌하는 경우. 충돌 후 사용자가 응용 프로그램을 다시 시작하라는 메시지가 표시되도록 응급 복구 프로세스를 제공하고 싶습니다. 이 작업을 수행하는 코드를 응용 프로그램 내부에 작성하고 충돌이 발생한 후에도 계속 실행하는 것이 가능합니다. 은 이상한 코드 루프처럼 들리지만이 경험에 대해 알고 싶습니다.응용 프로그램 충돌을 감지하는 방법은 무엇입니까?

+2

나는 또한 당신이 그 버그를 고칠 수 있도록 충돌의 세부 사항을 제출할 것을 제안 할 것을 제안합니다. :) –

답변

3

AppDomain.CurrentDomain.UnhandledException 이벤트에 가입하여 이벤트 처리기에서 처리 할 수 ​​있습니다.

+0

하지만 응용 프로그램이 충돌 한 경우에도이 이벤트가 계속 발생합니까? 응용 프로그램 내의 코드가 충돌 후에도 계속 실행된다는 논리는 찾지 못했습니다. –

+1

충돌 후 충돌이 발생합니다. 그리고 eve는 버그 리포트를 이메일이나 리포트 서비스에 보낼 수 있습니다. –

+1

@Ali Tarhini : msdn은 [.NET Framework 버전 4부터 시작하여이 이벤트가 프로세스 상태를 손상시키는 예외에 대해서는 발생하지 않습니다.] (http://msdn.microsoft.com/en-us/library/) system.appdomain.unhandledexception.aspx). AppDomain은 언로드됩니다. 이 이벤트의 목적은 일부 복구 논리를 실행하는 것입니다. –

-1

충돌과 무슨 뜻입니까? 예외가 발생하면 try 및 catch를 사용하여 이러한 오류를 처리 할 수 ​​있습니다.
예외가없는 경우 프로그램을 중단시키지 않도록 코드를 변경해야합니다.
편집 : 예 : 여러 스레드에서 동일한 변수를 사용하십시오.

1

코드를 Main 메서드에 씁니다. (그것이 Windows 응용 프로그램 또는 콘솔 응용 프로그램이라고 가정하면 하나가됩니다).

기본적으로 주요 방법은 다음과 같이보고 뭔가 끝 : RunApplication는 원래 MainRunCrashRecovery에 넣어 것입니다 무엇을 어디

public static Main(string[] args) 
{ 
    try 
    { 
     RunApplication(args); 
    } 
    catch(Exception ex) 
    { 
     RunCrashRecovery(args, ex); 
    } 
} 

을 충돌 정보를 전송하고있는 경우 사용자에게 요청 코드가되어 그들이 다시 시작하고 싶습니다.

관련 문제