Right way to close WPF GUI application: GetCurrentProcess().Kill(), Environment.Exit(0) or this.Shutdown()

后端 未结 4 1347
闹比i
闹比i 2020-12-15 02:38

My GUI desktop-based WPF 4.0 (C# .Net 4.0) program works with SQL Server database. Each time when I run my application it creates a connection to SQL Server via ADO.NET Enti

相关标签:
4条回答
  • 2020-12-15 03:05

    Use Application.Current.Shutdown();

    Add ShutdownMode="OnMainWindowClose" in App.xaml

    0 讨论(0)
  • 2020-12-15 03:09
    private void ExitMenu_Click(object sender, RoutedEventArgs e)
        {
            Application.Current.Shutdown();
        }
    
    0 讨论(0)
  • 2020-12-15 03:18

    Application.Current.Shutdown() is the proper way to shutdown an application. Generally because fire the exit events that you can handle more

    Process.GetCurrentProcess().Kill() should be used when you want to kill the application. more

    Ad1. The nature of those methods are totally different. The shutdown process can be paused to end some operations, kill force the application to close.

    Ad2. Probably Kill() will be the fastest way, but this is something like kernel panic.

    Ad3. Shutdown because it fires the close event

    Ad4. That depend what this is.

    0 讨论(0)
  • 2020-12-15 03:24

    @Damian Leszczyński - Vash's answer pretty much covers the 4 specific questions you asked. For your final question on Application.Exit(), that's an event you can subscribe to, not a method that you can call. It should be used like this:

    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
    }
    
    0 讨论(0)
提交回复
热议问题