ホームに戻る
出典 :
関連 :
目次 :
Timerクラス (System.Timers.Timer)
指定時間経過後にイベントを生成するタイマ。
基本的な使い方(C#)
(コード)
using System;
using System.Timers;
public class Example
{
// タイマの宣言
private static System.Timers.Timer aTimer;
// Main() メソッド
public static void Main()
{
// タイマの生成
// 周期2000ms
aTimer = new System.Timers.Timer(2000);
// タイマハンドラの指定
aTimer.Elapsed += OnTimedEvent;
// オートリセットオン ⇒ Elapsed イベントが繰り返し発生する
aTimer.AutoReset = true;
// タイマ開始
aTimer.Enabled = true;
// ユーザ入力待ち
Console.WriteLine("アプリケーションは {0:HH:mm:ss.fff} に開始されました。", DateTime.Now);
Console.WriteLine("終了する場合は、Enterキーを押してください...\n");
Console.ReadLine();
// タイマ停止、破棄
aTimer.Stop();
aTimer.Dispose();
Console.WriteLine("\n終了します。");
}
// タイマハンドラ
private static void OnTimedEvent(Object source, ElapsedEventArgs e)
{
// タイマが発火した時刻を出力
Console.WriteLine("Elapsed イベントが {0:HH:mm:ss.fff} に発生しました。", e.SignalTime);
}
}
(実行結果)
アプリケーションは 09:40:29.068 に開始されました。
終了する場合は、Enterキーを押してください...
Elapsed イベントが 09:40:31.084 に発生しました。
Elapsed イベントが 09:40:33.100 に発生しました。
Elapsed イベントが 09:40:35.100 に発生しました。
Elapsed イベントが 09:40:37.116 に発生しました。
Elapsed イベントが 09:40:39.116 に発生しました。
Elapsed イベントが 09:40:41.117 に発生しました。
:
:
終了します。
解説
タイマの周期[ms]はコンストラクタ、または Interval プロパティで指定(および変更)できる。
(コンストラクタ引数を省略した場合は別途 Interval プロパティで指定する必要がある。)
Enabled プロパティが true の間タイマは計時を行い、指定された周期に到達すると Elapsed イベントを発行する。
ここで、AutoReset プロパティが false であれば Elapsed イベントは最初の1回のみ発生し、タイマは停止するが、
AutoReset プロパティが true の場合は、周期ごとに Elapsed イベントが繰り返し発生する。
プロパティ
主要なものを抜粋。
定義名 |
型 |
説明 |
AutoReset |
bool |
タイマの発火時に、自動でリセットを行うかを表す。true の場合は Elapsed イベントが周期ごとに繰り返し発生する。
false の場合は初回の Elapsed イベント発生時にタイマが停止する。既定値は true 。 |
Enabled |
bool |
タイマが動作中かどうかを表す。false の場合は計時を行わず、Elapsed イベントも発生しない。 |
Events |
System.ComponentModel.EventHandlerList |
関連付けられているイベントハンドラのリスト。 |
Interval |
double |
Elapsed イベントの発生間隔(ミリ秒)。0 より大きく、Int32.MaxValue 以下である必要がある。 |
メソッド
主要なものを抜粋。いずれも引数、戻り値無し。
定義名 |
説明 |
Dispose() |
Timer オブジェクトが使用しているすべてのリソースを解放する。 |
Start() |
タイマを開始する。Enabled を true に設定することと等価。 |
Stop() |
タイマを停止する。Enabled を false に設定することと等価。 |
その他のタイマ
.NET(.NET Framework / .NET Core を含む)には System.Timers.Timer 以外にもタイマクラスが存在するが、機能はそれぞれ異なる。
System.Timers.Timer (当記事) |
System.Threading.Timer を改善した、最も一般的なタイマ。 コールバックを複数登録でき、マルチスレッド環境での使用に適している。
.NET Standard 1.6以降で使用可能。 |
System.Threading.Timer |
単一のコールバックメソッドを実行できるタイマ。 旧式化しており、.NET Standard 1.6以降では上記の System.Timers.Timer の使用が推奨される。 |
System.Windows.Threading.DispatcherTimer
|
WPFで使用できるタイマ。タイマハンドラがUIスレッドで実行されるため、UIリソースを直接操作できる。 |