Application.ApplicationExit

Application.ApplicationExitイベントは、アプリケーションが終了する時に発生するイベント。

Application.ApplicationExit Event (System.Windows.Forms) | Microsoft Docs

Windowsアプリケーション
Windowsアプリケーション

Windowsアプリケーションで、

Buttonを選択
Buttonを選択

Buttonを、

このように配置
このように配置

このように配置。
ダブルクリックでbutton1のイベントハンドラを書く。

Application.Exitでアプリを終了。

Program.csに、

using System;
using System.Collections.Generic;
using System.IO;    // ファイル入出力とデータストリーム(System.IO名前空間)
using System.Windows.Forms;

namespace Application_
{
    static class Program
    {
        /// <summary>
        /// アプリケーションのメイン エントリ ポイントです。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.ApplicationExit += new EventHandler(OnApplicationExit); // Application.ApplicationExitにOnApplicationExitをセット.
            Application.Run(new Form1());
        }

        // アプリケーションが終了する時のイベントハンドラ.
        static void OnApplicationExit(object sender, EventArgs e)
        {

            // メッセージボックスを表示.
            MessageBox.Show("OnApplicationExit");   // "OnApplicationExit"を表示.

        }
    }
}

Application.ApplicationExitイベントに、アプリケーションが終了する時のイベントハンドラOnApplicationExitを追加。
メッセージボックスを表示。
ここにブレークポイントを仕掛けておく。

buttonを押す
buttonを押す

button1を押すと、

ブレークポイントに来ている
ブレークポイントに来ている

ブレークポイントに来ている。
ただし、

メッセージボックスは表示されない
メッセージボックスは表示されない

メッセージボックスは表示されない。
終了処理をメッセージボックスのようなものでブロックして止めることはできないようである。
そこで、

終了時にファイルの書き込みをしてみる。
まあログのようなもので、終了処理したことの証拠である。

起動時
起動時

起動したらbutton1を押し、

アプリケーションを終了させる
アプリケーションを終了させる

アプリケーションを終了させる。

test.txtが作られる
test.txtが作られる

test.txtが作られて、

&quot;ABC&quot;が書き込まれる
"ABC"が書き込まれる

"ABC"が書き込まれる。
終了処理自体はできている。

Sample/dotnet/Application/ApplicationExit/src/Application_ at master · bg1bgst333/Sample · GitHub