3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

C#でWindowsFormのアプリ終了時の処理を記述してみる

Last updated at Posted at 2023-03-18

1. はじめに

  • WindowsFormアプリケーションを終了する時に処理する内容をまとめて記述したい
  • アプリの終了のパターンによって動作する、しないを把握しておきたい

2. 開発環境

  • C#
  • .Net6
  • Visual Studio 2022
  • Window 11

3. サンプルプログラム

3.1. フォーム

image.png

  • CloseMainFormボタン
    • 単純にフォームを閉じる
  • ApplicationExitボタン
    • Application.RunメソッドをExitする
  • EnvironmentExitボタン
    • フォーム起動前にアプリを閉じる

3.2. プログラムソース

public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();
        //ApplicationExitイベントハンドラを追加
        Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
    }

    private void CloseMainFormButton_Click(object sender, EventArgs e)
    {
        // フォームを閉じる
        this.Close();
    }

    public void Application_ApplicationExit(object sender, EventArgs e)
    {
        MessageBox.Show("アプリケーションが終了されました");

        //ApplicationExitイベントハンドラを削除
        Application.ApplicationExit -= new EventHandler(Application_ApplicationExit);
    }

    private void ApplicationExitButton_Click(object sender, EventArgs e)
    {
        //Application.RunメソッドをExitする
        Application.Exit();
    }

    private void EnvironmentExitButton_Click(object sender, EventArgs e)
    {
        //アプリケーションの強制終了
        Environment.Exit(0);
    }
}
  • FormのコンストラクタでApplication.ApplicationExitイベントを使用することでアプリケーション終了を知ることができる

4. 動作確認

4.1. CloseMainFormボタン

  • Application_ApplicationExitメソッドが呼び出される
    image.png

4.2. ApplicationExitボタン

  • Application_ApplicationExitメソッドが呼び出される
  • ただし、デバッグで設定したメッセージボックスは表示されない
    image.png

4.3. EnvironmentExitボタン

  • × Application_ApplicationExitメソッドが呼び出されない

4.4. ヘッダーの閉じるボタン

  • Application_ApplicationExitメソッドが呼び出される
    image.png

5. 結論

  • Application.ApplicationExitイベントでアプリケーション終了を通知する場合、アプリケーションの強制終了(Environment.Exit(0))は通知されないため注意する
  • Application.RunメソッドをExitする場合、メッセージボックスの表示がわからない現象が発生するため注意する

6. 参考文献

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?