C#/VB.NET Timerを使って一定時間ごとに処理を行う方法

タイマーを使って一定時間ごとに処理を行う方法について解説します。

一定時間ごとに処理を行いたい場合はどうしたらよいでしょうか?

Timerコンポーネントを利用すると、一定時間ごとの処理を実装することができます。

目次

受講者数No.1!初心者からプロへ導く信頼のスクール

    短期間で習得可能!未経験から実践力を磨く充実のプログラム

    今なら無料相談でAmazonギフトカードがもらえる!

    Timerクラスの概要

     Timerとは、一定時間ごとに処理を行うためのクラスです。C#やVB.NETではSystem.Timers.Timerクラスを使用します。このクラスを使用することで、一定時間ごとに処理を行うことができます。

     使用方法は、タイマーを生成し、Intervalプロパティに処理を行う時間間隔を設定し、Elapsedイベントに処理を記述し、Startメソッドでタイマーを開始することです。

    Timerで一定時間ごとに処理をする方法

    以下のサンプルでは、Elapsedイベントを利用して、Intervalに設定した時間ごとに処理を実行しています。

    using System;
    using System.Timers;
    
    class Program {
        static void Main(string[] args) {
            Timer timer = new Timer();
            timer.Interval = 1000; // 1秒ごとに処理を行う
            timer.Elapsed += Timer_Elapsed; // Elapsedイベントに処理を記述
            timer.Start(); // タイマーを開始
            Console.ReadLine(); // キー入力待ち
        }
        static void Timer_Elapsed(object sender, ElapsedEventArgs e) {
            Console.WriteLine("1秒経過");
        }
    }
    Imports System
    Imports System.Timers
    
    Class Program
        Shared Sub Main(ByVal args() As String)
            Dim timer As New Timer()
            timer.Interval = 1000 ' 1秒ごとに処理を行う
            AddHandler timer.Elapsed, AddressOf Timer_Elapsed ' Elapsedイベントに処理を記述
            timer.Start() ' タイマーを開始
            Console.ReadLine() ' キー入力待ち
        End Sub
    
        Shared Sub Timer_Elapsed(ByVal sender As Object, ByVal e As ElapsedEventArgs)
            Console.WriteLine("1秒経過")
        End Sub
    End Class

     このプログラムでは、Timerクラスのインスタンスを作成し、timer変数に代入します。timer変数のIntervalプロパティに1000を設定し、1秒ごとに処理を行うように設定します。

     timer変数のElapsedイベントに処理を記述するため、Timer_Elapsedメソッドをイベントハンドラーに設定します。そして、timer変数のStartメソッドを呼び出し、タイマーを開始します。

    Console.ReadLine();は、キー入力待ちをすることで、タイマーが終了するまでに処理を停止します。

    Timer_Elapsedメソッドは、Elapsedイベントが発生したときに実行されます。そこで、”1秒経過”という文字列を出力します。

    Timerを使ったストップウォッチをフォーム実装する例

    Timerを使ったストップウォッチを実装する方法を例にTimerクラスの使い方を解説します。

     Timerコンポーネントを利用すると、一定の時間ごとに処理行うことができます。
    Timerコントロールをフォームに追加することで画面下のコンポーネントトレイにタイマーマークが追加されます。

    コンポーネントトレイ

    TimerコンポーネントのIntervalプロパティで、処理を行う時間間隔を設定することができます。
    ※単位はミリ秒 例:1秒感覚の場合は1000を設定

     実行する処理は、TimerコンポーネントのTickイベントハンドラーに記述します。先程追加したtimer1をダブルクリックすることで自動で生成されます。

     TickイベントハンドラーはEnabledプロパティが「true」のときに実行されます。「false」のときは実行されません。また、Startメソッドをでタイマーが始まり、Stopメソッドでタイマーが停止させることができます。

    以下は3秒ごとにラベルの数値を1プラスするサンプルです。

            int cnt = 0;
    
            private void Form1_Load(object sender, EventArgs e)
            {
                label1.Text = cnt.ToString();
            }
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                cnt++;
                label1.Text = cnt.ToString();
    
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                timer1.Enabled = !timer1.Enabled;
            }
        Private cnt As Integer = 0
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
            label1.Text = cnt.ToString()
        End Sub
    
        Private Sub timer1_Tick(sender As Object, e As EventArgs) Handles timer1.Tick
            cnt += 1
            label1.Text = cnt.ToString()
        End Sub
    
        Private Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click
            timer1.Enabled = Not timer1.Enabled
        End Sub
    

    Timerの種類について

    Timerにはいくつかの種類があります。各特徴ごとに以下の表にまとめます。

    Timerの種類特徴使用シーン
    System.Timers.Timer一般的に使用される精度の高いタイマー一般的なタイマー処理
    System.Threading.Timer別スレッドで動作するタイマー複数のタスクを並列処理する場合
    System.Windows.Forms.TimerWindows Form向けのタイマーWindows Formアプリケーションにおけるタイマー処理
    System.Windows.Threading.DispatcherTimerWPF向けのタイマーWPFアプリケーションにおけるタイマー処理
    Timerの種類

    リスキリングでキャリアアップしてみませんか?

    リスキリング(学び直し)は、経済産業省が推奨しており、

    今だけ、最大70%のキャッシュバックを受けることができます。

    リスキリング 給付金が出るスクール紹介

    最大70%の給付金が出るおすすめのプログラミングスクール!

    国策で予算が決められているため申し込みが多い場合は早期に終了する可能性があります!

    興味のある方はすぐに確認しましょう。

    まとめ

    Timerの使い方について解説しました。

    • タイマーを使って一定時間ごとに処理を行うことができます。
      1. System.Timers.Timerクラスを使用します。
      2. Intervalプロパティに処理を行う時間間隔を設定します。
      3. Elapsedイベントに処理を記述します。
      4. Startメソッドでタイマーを開始します。
    • WindowsフォームでストップウォッチをTimerを利用した実装方法を紹介しました。
      1. Timerコンポーネントをフォームに追加します。
      2. TimerコンポーネントのIntervalプロパティで、処理を行う時間間隔を設定します。※単位はミリ秒
      3. 実行する処理は、TimerコンポーネントのTickイベントハンドラーに記述します。
      4. TickイベントハンドラーはEnabledプロパティが「true」のときに実行されます。
      5. Startメソッドを実行することでタイマーが始まり、Stopメソッドでタイマーが停止します。
    • Timerには4つの種類がある。

    一定時間ごとの処理を実装することができました!

    Timerコンポーネントを利用することで一定時間ごとに処理するバッチ処理のようなプログラムを簡単に作成することができます。

    よかったらシェアしてね!
    • URLをコピーしました!
    • URLをコピーしました!
    目次