Web開発など

Java, JS, CSS, HTML, Unity, C# のことなどを書いてます。フリーソフトの公開もしています。

C#:常駐アプリでタイマー処理を実行

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

常駐アプリの開発方法

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

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時間毎に以下のメッセージが最前面に表示されるようになります。