【C#入門】Timerで処理を一定間隔で繰り返す方法

こんにちは!エンジニアの中沢です。

C#には一定間隔で同じ処理を繰り返すための「Timer」があります。Timerを使えば指定した時間の間隔で、同じ処理を一定回数行うことができます。

この記事では、

  • Timerとは
  • Timerの使い方
  • という基本的な内容から、

  • Timerの種類による違い
  • などの応用的な使い方に関しても解説していきます。

    今回はこれらの方法を覚えるために、Timerのさまざまな使い方をわかりやすく解説します!

    目次

    Timerとは

    Timerとは同じ処理を一定間隔で繰り返し行う場合に使うモノです。時間計測に使うのは「Stopwatchクラス」なので間違えないように注意してください。

    Timerでは同じ処理を繰り返しますが、if文で条件を指定することで任意の回数で処理を止めることもできます。

    Timerの使い方

    ここでは、もっとも一般的な「System.Timers.Timerクラス」の使い方を解説します。Timerを使うには、Timerのコンストラクタの引数にタイマーの間隔をミリ秒で指定します。

    タイマーの処理は、「Elapsedイベント」に記述します。タイマーの「Startメソッド」でタイマーの処理をスタートします。

    Timerの使い方を次のプログラムで確認してみましょう。

    using System;
    using System.IO;
    using System.Timers;
    
    namespace Sample
    {
        class Sample
        {
            static void Main()
            {
                int num = 0;
    
                // タイマーの間隔(ミリ秒)
                Timer timer = new Timer(1000);
    
                // タイマーの処理
                timer.Elapsed += (sender, e) =>
                {
                    if (num < 5)
                    {
                        Console.WriteLine("5回繰り返します");
                        num++;
                    }
                    else
                    {
                        timer.Stop();
                        Console.WriteLine("処理を終了しました");
                    }
                };
    
                // タイマーを開始する
                timer.Start();
    
                Console.ReadKey();
            }
        }
    }

    実行結果:

    5回繰り返します
    5回繰り返します
    5回繰り返します
    5回繰り返します
    5回繰り返します
    処理を終了しました

    このプログラムでは、1000ミリ秒(1秒)間隔で文字を表示して、5回繰り返したところで処理を終了しています。

    Timerの種類による違い

    Timerには4種類ありますが、精度が高く一般的によく使われるのは先ほど紹介した「System.Timers.Timerクラス」です。ここでは、4種類のTimerの違いを簡潔にまとめて解説します。

    「System.Timers.Timer」は一般的に使われる精度の高いタイマーなので、基本的にはこれを使うと覚えておけば問題ないでしょう。

    「System.Threading.Timer」は、別スレッドで動作することが特徴のタイマーです。「System.Windows.Forms.Timer」は、「Windows Form」向けに作られたタイマーです。「System.Windows.Threading.DispatcherTimer」はWPF向けのタイマーです。

    まとめ

    いかがでしたか?

    今回はTimerを使って一定間隔で処理を繰り返する方法を解説しました。Timerには種類がありますが、一般的には「System.Timers.Timerクラス」を使うのでぜひ覚えておいてくださいね。

    もし、Timerの使い方を忘れてしまったらこの記事を確認してください!

    この記事を書いた人

    【プロフィール】
    DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
    累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
    【専門分野】
    IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

    目次