it-source

WPF GUI 애플리케이션을 닫는 올바른 방법:Get Current Process().Kill() , Environment.exit(0) 또는 this.셧다운()

criticalcode 2023. 4. 16. 15:13
반응형

WPF GUI 애플리케이션을 닫는 올바른 방법:Get Current Process().Kill() , Environment.exit(0) 또는 this.셧다운()

GUI 데스크톱 기반의 WPF 4.0(C#.Net 4.0) 프로그램은 SQL Server 데이터베이스와 연동됩니다.응용 프로그램을 실행할 때마다 ADO를 통해 SQL Server에 대한 연결이 생성됩니다.NET Entity Framework와 SQL Server에 연결할 수 없는 경우 예외를 발생시키고 다음을 표시합니다.MessageBox알림과 함께.

이제 사용자가 이 메시지 애플리케이션을 읽은 후 종료했으면 합니다.세 가지 방법을 찾았습니다.

Process.GetCurrentProcess().Kill();

또는

this.Shutdown(); // Application.Current.Shutdown()

또는

System.Environment.Exit(0);

Windows 태스크 매니저에서 어플리케이션을 닫고 어플리케이션 프로세스를 종료하는 등 모두 정상적으로 동작하며 필요한 작업을 수행합니다.

질문:

  1. 그들의 차이점은 무엇입니까?

  2. 어느 쪽이 애플리케이션을 빨리 닫습니까?

  3. 애플리케이션을 닫으려면 어떤 방법을 사용해야 합니까?

  4. Application.Current.Shutdown()그리고.this.Shutdown()같은 방법으로 애플리케이션을 종료할 수 있습니까?또는 WPF GUI 애플리케이션을 종료하는 다른 보다 적절한 방법이 있을까요?

Application.Exit()이 에러가 표시되므로 동작하지 않습니다.

이벤트 'System.Windows.Application.Exit'는 += 또는 -=의 왼쪽에만 표시될 수 있습니다.

Application.Current.Shutdown()는, 애플리케이션을 셧다운 하는 적절한 방법입니다.일반적으로는 종료 이벤트를 발생시키기 때문에 사용자가 처리할 수 있는 추가 정보를 제공합니다.

Process.GetCurrentProcess().Kill()응용 프로그램을 가능한 한 빨리 종료하고 싶을 때 사용해야 합니다.자세한 내용은 이쪽입니다.

이러한 방법의 특성은 완전히 다릅니다.

  • Shutdown()일부 작업을 종료하기 위해 일시 중지할 수 있습니다.
  • Kill()응용 프로그램을 가능한 한 빨리 강제 종료합니다.

아마...Kill()가장 빠른 방법이겠지만 이건 커널 패닉 같은 거예요

응용 프로그램을 사용합니다.현재.셧다운();

App.xaml에서 ShutdownMode="OnMainWindowClose" 추가

private void ExitMenu_Click(object sender, RoutedEventArgs e)
    {
        Application.Current.Shutdown();
    }

@Damian Leszzzzynski - Vash의 답변에는 당신이 질문한 4가지 질문이 거의 포함되어 있습니다.에 대한 마지막 질문입니다.Application.Exit()가입할 수 있는 이벤트이지 호출할 수 있는 메서드가 아닙니다.다음과 같이 사용해야 합니다.

Application.Current.Exit += CurrentOnExit; 
//this.Exit += CurrentOnExit; would also work if you're in your main application class

...

private void CurrentOnExit(object sender, ExitEventArgs exitEventArgs)
{
    //do some final stuff here before the app shuts down
}

언급URL : https://stackoverflow.com/questions/3880836/right-way-to-close-wpf-gui-application-getcurrentprocess-kill-environment

반응형