結果だけでなく過程も見てください

たい焼きさんの日々の奮闘を綴る日記です。

C# WPFアプリケーションの終了方法あれこれ

終了方法が色々あったのでまとめてみました。
他にも考慮すべき点があった場合は,加筆します。

  Shutdown関数 Application.Current.Shutdown関数 Environment.Exit関数 Close関数
Appクラス Shutdown→後続コード→App.OnExit()→App.Run()直後 Shutdownと同じ 即アプリケーション終了
MainWindowクラス 長いので以下参照 即アプリケーション終了(Closing関数なども呼ばれず) 長いので以下参照

MainWindowのApplication.Current.Shutdown関数

OnLastWindowCloseの場合

最後のウィンドウを終了した場合だけ,↓の終了モードの動きをする。

OnMainWindowCloseの場合

メインウィンドウを終了した場合だけ,↓の終了モードの動きをする。

OnExplicitShutdownの場合

とにかく↓の終了モードの動きをする。

終了モードの動作

Application.Current.Shutdown();
 ↓
後続のコード〜関数終了
 ↓
App.OnExit()
 ↓
その後,App.Run()の直後へ移動。

終了モードでない場合

Application.Current.Shutdown();
 ↓
後続のコード〜関数終了

MainWindowのClose関数

OnLastWindowCloseとOnMainWindowCloseの場合

Application.Current.Shutdownと同様の動作をする。
Closing関数などはコールされる。

OnExplicitShutdown

Application.Current.Shutdownの「終了モードでない場合」の動作をする。

メインウィンドウについて

一番最初に作成されたMainWindowがメインウィンドウとなる。
App.MainWindowプロパティで取得・変更が可能だ。

シャットダウンモードについて

App.ShutdownModeプロパティで変更できる。

プライバシーポリシー お問い合わせ