2011-08-22 3 views
62

C# 응용 프로그램을 닫을 때 가장 좋은 방법은 무엇입니까?닫기 응용 프로그램

Environment.Exit(0); or Application.Exit(); 

을하지만 차이점은 무엇입니까 :

나는 당신이 사용할 수있는 읽고?

Environment.Exit (0)과 관련하여 Java로 작업 할 때 종료 코드를 사용했지만 그 목적을 완전히 이해하지 못했습니다. C#에서 응용 프로그램을 종료 할 때 어떤 역할을합니까?

+2

응용 프로그램에 따라 다릅니다 링크 Application.Exit

수표를 사용하는 것이 가장 좋습니다 바랍니다. 악마를 작성하면 0을 반환합니다. Windows 응용 프로그램을 사용하는 경우 주 양식을 닫습니다. 강제 종료를 사용하지 마십시오. – Cynede

+1

가능한 중복 http://stackoverflow.com/questions/1312885/application-exit-vs-application-exitthread-vs-environment-exit –

+1

@jalal이 귀하의 권리 일 수 있습니다 ..하지만 중복되지는 않을 것입니다. .. 나는 이미 귀하의 의견 분 전에 아래에 내 게시물에 그 링크를 추가했습니다. 중복으로 표시하지 마십시오. 가치가 있기를 바랍니다. –

답변

64

System.Windows.Forms.Application.Exit() - 종료해야하는 모든 메시지 펌프에 알리고 메시지 처리 후 모든 응용 프로그램 창을 닫습니다. 이 메서드는 모든 스레드에서 실행중인 모든 메시지 루프를 중지하고 응용 프로그램의 모든 창을 닫습니다. 이 메서드는 응용 프로그램을 강제로 종료하지 않습니다. Exit 메서드는 일반적으로 메시지 루프 내에서 호출되며 Run이 반환하도록합니다. 현재 스레드에 대해서만 메시지 루프를 종료하려면 ExitThread를 호출하십시오. 이것은 WinForms 응용 프로그램을 실행중인 경우 사용할 호출입니다. 일반적인 지침으로 System.Windows.Forms.Application.Run을 호출 한 경우이 호출을 사용하십시오.

System.Environment.Exit (exitCode) -이 프로세스를 종료하고 기본 운영 체제에 지정된 종료 코드를 제공합니다. 이 호출을 수행하려면 SecurityPermissionFlag.UnmanagedCode 권한이 있어야합니다. 그렇지 않으면 SecurityException 오류가 발생합니다. 이것은 콘솔 응용 프로그램을 실행중인 경우 사용할 호출입니다.

는 나는이 Application.Exit() vs Application.ExitThread() vs Environment.Exit()http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx

+5

'Application.Run'을 호출하기 전에 유일한 선택은'Environment.Exit'이고'Application.Exit'는 효과가 없다는 것을 명시 적으로 지적 할 가치가 있습니다. – Carsten

+1

두 가지 양식의 로그인 및 기본 양식이 있습니다. 로그인 버튼을 클릭했을 때 로그인 폼을 클릭하면 로그인이 클릭되고 mainform이 열릴 때 this.hide()를 사용하고 폼이 닫힐 때 숨기기를 사용하면 로그인 폼이 다시 나타납니다. 응용 프로그램을 실행하고 로그인 버튼을 클릭 한 다음 mainform을 여러 번 반복하여 닫고 로그인 양식의 exit (System.Windows.Forms.Application.Exit()) 버튼을 클릭하면 모든 로그인 양식이 표시됩니다. 나는 숨었다. 하지만 (System.Environment.Exit (0)을 사용하면 응용 프로그램이 닫히고 종료됩니다. 모두 내가 나중에 말한 것이 최선이라고 말할 것입니다. –

16

Application.Exit은 모든 메시지 펌프에게 종료해야한다고 알리고 이벤트 처리를 마칠 때까지 기다린 다음 응용 프로그램을 종료합니다. 반드시 응용 프로그램을 강제로 종료하지는 않습니다.

Environment.Exit은 모든 Windows 응용 프로그램에 적용 할 수 있지만 주로 콘솔 응용 프로그램 용으로 만들어졌습니다. 주어진 종료 코드로 프로세스를 즉시 종료합니다. 윈도우 콘솔 응용 프로그램에서 응용 프로그램 및 Environment.Exit 양식에 (I 완료에 Main 방법/엔트리 포인트를 실행하자가 아닌 콘솔 응용 프로그램에 Environment.Exit 전화를 선호 있지만) 일반적으로

당신은 Application.Exit를 사용해야합니다.

자세한 내용은 MSDN 설명서를 참조하십시오.

+0

답해 주셔서 감사합니다. Program.cs보다는 다른 클래스에서 내 응용 프로그램을 종료해야하며 콘솔 응용 프로그램이며이 기능은 훌륭합니다. 나는 키워드 반환을 사용할 수 있었다. 나는 그것이 메인이 끝나게 할 것이라고 믿는다. 그러나이 경우에는 아무런 차이가 없다. – Radmation

0

C#에서 응용 프로그램을 종료 할 때 어떤 역할을합니까?

다른 모든 응용 프로그램과 동일합니다. 기본적으로 그들은 발신자에게 반환됩니다. 시작이 iicon 더블 클릭 인 경우에는 관련이 없습니다. 관련된 호출은 앱이 반환 코드에서 작동하는지 여부를 결정하는 배치 파일입니다. 그래서, 당신이 필요로하는 프로그램을 작성하지 않는다면, 리턴 코드는 무의미하다.

하지만 그 차이점은 무엇입니까?

하나는 System.Windows.Forms? 응용 프로그램의 환경 1에서 비롯됩니다. 기능적으로 많은 차이점이 없어야합니다.

관련 문제