GUIデスクトップベースのWPF 4.0(C#.Net 4.0)プログラムは、SQL Serverデータベースで動作します。アプリケーションを実行するたびに、ADO.NET Entity Frameworkを介してSQL Serverへの接続が作成され、SQL Serverに到達できない場合は例外がスローされ、通知とともにMessageBox
が表示されます。
ユーザーがこのメッセージを読んだ後、アプリケーションがシャットダウンするようになりました。これを行うための3つの方法を見つけました。
_Process.GetCurrentProcess().Kill();
_
または
_this.Shutdown(); // Application.Current.Shutdown()
_
または
_System.Environment.Exit(0);
_
それらはすべて正常に動作し、必要な処理を実行します。Windowsタスクマネージャーでアプリケーションを閉じ、アプリケーションのプロセスを終了します。
私は知りたいです:
Application.Current.Shutdown()
とthis.Shutdown()
はアプリケーションを閉じるのと同じ方法ですか?または、WPF GUIアプリケーションを閉じる別の、より適切な方法がありますか?
Application.Exit()
は、エラーが表示されるため機能しません。
イベント「_
System.Windows.Application.Exit
_」は、+ =または-=の左側にのみ表示できます
ありがとう。
Application.Current.Shutdown()
は、アプリケーションをシャットダウンする適切な方法です。一般的に、処理可能なexitイベントを起動するため more
アプリケーションを強制終了する場合は、Process.GetCurrentProcess().Kill()
を使用する必要があります。 詳細
Ad1。これらの方法の性質はまったく異なります。シャットダウンプロセスを一時停止して一部の操作を終了し、強制終了してアプリケーションを強制終了することができます。
Ad2。おそらくKill()
が最速の方法ですが、これはカーネルパニックのようなものです。
Ad3。 closeイベントを起動するため、シャットダウンします
Ad4。それはthis
が何であるかによります。
Application.Current.Shutdown();を使用します
追加ShutdownMode = "OnMainWindowClose" in 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
}