Web系開発メモ

Java, C#, HTML, CSS, JavaScript のことなどを書いてます。

C# 常駐アプリでタイマー処理を実行(タスクトレイ常駐型 .NET6.0)

C#でタスクトレイに常駐するアプリを作成して、一定の時間が経過したら処理を実行する方法を書いていきます。

常駐アプリの開発方法

Windowsのタスクトレイ常駐型アプリを作成する方法は、以下の記事にまとめています。

web-dev.hatenablog.com

今回はリンク先のソースを編集して、処理を実行するようにしていきます。

プログラムの改修

常駐してから1時間毎にメッセージを表示するようにタイマーを設定します。

Program.cs

namespace TaskTrayApp {
    internal static class Program {
        [STAThread]
        static void Main() {
            ApplicationConfiguration.Initialize();
            CreateNotifyIcon();
            StartTimer();
            Application.Run();
        }
        private static void CreateNotifyIcon() {
            // 常駐アプリ(タスクトレイのアイコン)を作成
            var icon = new NotifyIcon();
            icon.Icon = new Icon("Icon.ico");
            icon.ContextMenuStrip = ContextMenu();
            icon.Text = "通知アプリ";
            icon.Visible = true;
        }
        private static ContextMenuStrip ContextMenu() {
            // アイコンを右クリックしたときのメニューを返却
            var menu = new ContextMenuStrip();
            menu.Items.Add("終了", null, (s, e) => {
                Application.Exit();
            });
            return menu;
        }
        private static void StartTimer() {
            // 1時間毎に処理を実行するタイマーを用意
            var timer = new System.Timers.Timer(
                1000.0  * 60  * 60 // 1000ミリ秒(1秒) * 60 * 60
            );
            // タイマー処理を設定
            timer.Elapsed += (s, e) => {
                MessageBox.Show(
                    "1時間が経過しました。", "時間経過通知",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Information,
                    MessageBoxDefaultButton.Button1,
                    MessageBoxOptions.DefaultDesktopOnly
                );
            };
            // タイマーを有効化
            timer.Enabled = true;
        }
    }
}

プログラムの実行

プログラムを実行すると、1時間毎に以下のメッセージが最前面に表示されるようになります。