대 Enviroment.Exit 대 Application.Exit은 우리가 응용 프로그램을 종료 할 수있는 방법은 다음과 같습니다윈폼 : 다음을 알리고 Form.Close
Enviroment.Exit(0)
Application.Exit()
Form.Close()
무엇 이 세 가지 방법의 차이점과 각 방법을 사용할 때의 차이점은 무엇입니까?
대 Enviroment.Exit 대 Application.Exit은 우리가 응용 프로그램을 종료 할 수있는 방법은 다음과 같습니다윈폼 : 다음을 알리고 Form.Close
Enviroment.Exit(0)
Application.Exit()
Form.Close()
무엇 이 세 가지 방법의 차이점과 각 방법을 사용할 때의 차이점은 무엇입니까?
적절한 방법은 Application.Exit()
입니다. Documentation에 따르면, 모든 메시지 루프를 종료하고 모든 창을 닫음으로써 양식에 정리 코드 (Form.OnClose 등)를 실행할 수있는 가능성을 부여합니다.
Environment.Exit
은 프로세스를 죽일뿐입니다. 일부 양식에 예를 들어 저장되지 않은 변경 사항은 사용자에게 저장할 것인지 묻는 기회가 없습니다. 또한 리소스 (데이터베이스 연결 등)를 제대로 해제 할 수 없거나 파일이 플러시되지 않을 수도 있습니다.
Form.Close
그냥 폼을 닫습니다. 다른 양식이 열려있는 경우 (아마도 지금은 아니지만 향후 버전의 응용 프로그램에서) 응용 프로그램이 종료되지 않습니다.
멀티 스레딩을 사용하는 경우 Application.Exit()
은 스레드를 종료하지 않으므로 GUI가 종료 된 경우에도 응용 프로그램이 백그라운드에서 계속 작동합니다. 따라서 주요 기능 (예 : Program.Main()
) 또는 기본 양식의 OnClose
이벤트에서 스레드를 죽이기위한 조치를 취해야합니다.
+1 –
스레드가 프로세스를 종료하지 못하도록 IsBackground 속성을 스레드에 설정할 수 있습니다. –
파일을 플러시하는 것에 대해 정말 사실입니까? 프로세스가 종료되면 OS는 핸들을 플러시하는 기존 핸들을 모두 닫아야합니다. –
모두 괜찮습니다. 이지만 form.Close()
은 응용 프로그램을 닫지 않으므로 양식을 닫은 후 주 메소드가 int (종료 코드)를 반환합니다.
당신이 exitcodes이 Environmet.Exit(exitcode)
을 사용하거나 메인 방법
이 중복 질문하지 않습니다에가 ExitCode를 반환하여 응용 프로그램이 종료 할 것을 원하는 경우. 신청서를 종료 할 때 사용할 애플리케이션을 묻지 않습니다. 비슷한 작업을 수행함에 따라 이러한 메서드 간의 차이점을 묻는 중입니다. 문서 참조 용 –