2013-02-07 3 views
-1

에 충돌했음을 감지합니다. 응용 프로그램이 작동하기 시작하면 충돌이 발생했거나 성공적으로 닫혔는지 여부를 알고 싶습니다. 응용 프로그램에서 자체를 감지하고이를 확인하기 위해 외부 응용 프로그램을 사용하지 않아야합니다.응용 프로그램의 마지막 실행이 C#

C#을 사용하여 어떻게 할 수 있습니까?

+0

의'Main()'은'try {} catch {}'안에 모든 것을 넣고 충돌보고 파일 등을 작성하는 코드와 같이 필요한 모든 코드를'catch {}'에 넣습니다. – Nolonar

+4

당신은 다른 언어로도 똑같이 할 수 있습니다 ... 시작/정상 종료시에 설정/해제되는 외부 상태를 유지하십시오. 그래서 당신의 일을하는 것이 아닙니다 ... 일부 소스 코드를 보여주세요 ... 당신은 무엇을 시도 했습니까? 정확히 작동하지 않는 것은 무엇입니까? – Yahia

+0

@Yahia : OP에는이 작업을 수행하는 방법에 대한 아이디어가 전혀 없을 수도 있습니다. 그들이 깃발을 사용해야한다는 것을 알았더라도 나는 여전히 당신과 같은 질문을 할 것입니다. – Jon

답변

6

응용 프로그램은 종료 할 때 마지막으로 수행 할 일종의 영구 저장소에서 "정상 종료"플래그를 설정해야합니다.

시작할 때이 플래그가 설정되어 있는지 확인하십시오. 그렇지 않다면, 마지막으로 도망 갔거나 추락했거나 강제 종료되었습니다. 그럴 경우 현재 실행 준비를 위해 다시 설정하십시오.

0

당신은 Program.cs

#if !DEBUG 
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); 
Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException); 
#endif 

Application.EnableVisualStyles(); 
Application.SetCompatibleTextRenderingDefault(false); 
Application.Run(new FrmMain()); 

당신이 모든 오류를 처리하는이 방법을 사용할 수 있습니다, 당신이 그들을 로그인하거나 심지어 치명적인 오류의 경우에는 응용 프로그램을 다시 시작하고 사용자에 대한 세션을 복원 할 수 있습니다. Notice #if !DEBUG 조건, 디버그하기 어려울 것입니다. 왜냐하면 처리되지 않은 예외가 모두 여기에 떨어지기 때문입니다.

+0

지시문이 필요하지 않습니다. 디버깅 할 수 없다면 휴식 시간에 예외가 발생했습니다. 디버그 메뉴 -> 예외를 클릭하고 공통 언어 런타임 예외에 던져진 열을 체크인하여 모든 표준 예외를 해제하십시오. – Rafal

+0

TY 라팔, 확인해 보겠습니다! – HoGo

관련 문제