ホームに戻る
出典 :
[型]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リソースを直接操作できる。