タイマーを使って一定時間ごとに処理を行う方法について解説します。
一定時間ごとに処理を行いたい場合はどうしたらよいでしょうか?
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.Timer | Windows Form向けのタイマー | Windows Formアプリケーションにおけるタイマー処理 |
System.Windows.Threading.DispatcherTimer | WPF向けのタイマー | WPFアプリケーションにおけるタイマー処理 |
リスキリングでキャリアアップしてみませんか?
リスキリング(学び直し)は、経済産業省が推奨しており、
今だけ、最大70%のキャッシュバックを受けることができます。
最大70%の給付金が出るおすすめのプログラミングスクール!
国策で予算が決められているため申し込みが多い場合は早期に終了する可能性があります!
興味のある方はすぐに確認しましょう。
まとめ
Timerの使い方について解説しました。
- タイマーを使って一定時間ごとに処理を行うことができます。
- System.Timers.Timerクラスを使用します。
- Intervalプロパティに処理を行う時間間隔を設定します。
- Elapsedイベントに処理を記述します。
- Startメソッドでタイマーを開始します。
- WindowsフォームでストップウォッチをTimerを利用した実装方法を紹介しました。
- Timerコンポーネントをフォームに追加します。
- TimerコンポーネントのIntervalプロパティで、処理を行う時間間隔を設定します。※単位はミリ秒
- 実行する処理は、TimerコンポーネントのTickイベントハンドラーに記述します。
- TickイベントハンドラーはEnabledプロパティが「true」のときに実行されます。
- Startメソッドを実行することでタイマーが始まり、Stopメソッドでタイマーが停止します。
- Timerには4つの種類がある。
一定時間ごとの処理を実装することができました!
Timerコンポーネントを利用することで一定時間ごとに処理するバッチ処理のようなプログラムを簡単に作成することができます。
コメント