ホームに戻る
出典 :
[型]Timer(タイマ) クラス (System.[型]Timer(タイマ)s) | Microsoft Learn
関連 :
[WPF]DispatcherTimer Stopwatch(ストップウォッチ) DateTime と TimeSpan
目次 :

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リソースを直接操作できる。