WPF GUIアプリケーションを閉じる正しい方法:getCurrentProcess()。kill()、Environment.exit(0)またはthis.shutdown()

StackOverflow https://stackoverflow.com/questions/3880836

質問

GUIデスクトップベースのWPF 4.0(C#.NET 4.0)プログラムは、SQL Serverデータベースで動作します。アプリケーションを実行するたびに、ADO.NETエンティティフレームワークを介してSQL Serverへの接続を作成し、SQL Serverが到達できない場合、例外をスローして表示します MessageBox 通知付き。

これで、ユーザーがこのメッセージアプリケーションを読んだ後にシャットダウンすることを望んでいます。私はこれを行うための3つの方法を見つけました:

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() アプリケーションを殺すときは使用する必要があります。 もっと

AD1。これらの方法の性質はまったく異なります。シャットダウンプロセスを一時停止して、一部の操作を終了し、アプリケーションを強制的に閉じることができます。

AD2。おそらく Kill() 最速の方法になりますが、これはカーネルパニックのようなものです。

AD3。閉鎖は、緊密なイベントを発射するためにシャットダウンします

AD4。それは何に依存します this は。

他のヒント

使用する application.current.shutdown();

追加 shutdownmode = "onmainwindowclose"app.xaml

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

@DamianLeszczyński-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
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top