【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の使い方を忘れてしまったらこの記事を確認してください!

    この記事を書いた人

    フリーランスエンジニア。
    システム開発からコンテンツ作成まで幅広く対応します。

    連絡先はこちらです。
    ntakeshi@sejuku.net

    目次