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

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

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

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

目次

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をコピーしました!

コメント

コメントする

CAPTCHA


目次