PR

 定期的に決まった処理を実行するには,Timerクラスを利用する。Timerクラスは決められた時間ごとにTickイベント(System.Windows.Forms.Timerクラスの場合)/Elapsed(System.Timers.Timerクラスの場合)イベントを発生するので,Tick/Elapsedイベントのイベント・ハンドラに書かれた処理が定期的に実行される。Tick/Elapsedイベントを発生させる時間間隔は,Intervalプロパティに設定する。単位はミリ秒で,デフォルトは100である。

 System.Windows.Forms.Timerクラスは,Windowsフォーム・アプリケーションで使用できるように最適化されており,ユーザー・インターフェース・スレッドを使用して処理を実行するシングル・スレッド環境に合わせて設計されている。そのため,ウインドウで使用する必要がある。また精度の上限は55ミリ秒である。ウインドウを持たないアプリケーション,マルチスレッド環境,55ミリ秒以上の精度が必要な場合には,System.Timers.Timerクラスを利用する。

 なお,System.Windows.Forms.Timerクラスはコンポーネントとして実装されており,Visual Studioを利用して開発するときは,ツールボックス内のTimerコンポーネントをフォーム上にドラッグ&ドロップすることで,アプリケーションに実装可能である。また,Tickイベントハンドラを実装するのに,Visual Studioのプロパティ・ウインドウを利用できる。

サンプルコードを見る


名前空間
System.Windows.Forms
System.Timers
対応バージョン
.NET Framework 2.0,1.1,1.0
.NET Compact Framework 2.0,1.0(System.Windows.Forms.Timerクラスのみ)
主なプロパティ
AutoReset(System.Timers.Timerクラスのみ)
指定した時間が経過するたびに何度も続けてElapsedイベントを発生させるか,あるいは1回だけしかElapsedイベントを発生させないかを示す値を取得または設定する。Trueに設定すると,Startメソッドを実行した後,Intervalプロパティに設定した時間が経過するたびに何度もElapsedイベントが発生する。Falseに設定すると,Startメソッドを実行した後,Intervalプロパティに設定した時間が経過したときに1回だけしかElapsedイベントが発生しない。

Enabled
Tick/Elapsedイベントを発生させるかどうかを示す値を取得または設定する。Trueに設定すると,Intervalプロパティに設定した時間が経過したときに,Tick/Elapsedイベントが発生する。つまりStartメソッドを実行したときと同じである。Falseに設定すると,Tick/Elapsedイベントは発生しない。つまりStopメソッドを実行したときと同じである。デフォルトはFalseである。

Interval
Tick/Elapsedイベントの発生間隔を取得または設定する。単位はミリ秒で,デフォルトは100である。

主なメソッド
Start
Tick/Elapsedイベントの発生を開始する。EnabledプロパティをTrueに設定するのと同じである。

Stop
Tick/Elapsedイベントの発生を停止する。EnabledプロパティをFalseに設定するのと同じである。

主なイベント
Elapsed(System.Timers.Timerクラスのみ)
指定した時間が経過すると発生する。このイベントを発生する時間間隔は,Intervalプロパティに設定する。

Tick(System.Windows.Forms.Timerクラスのみ)
指定した時間が経過すると発生する。このイベントを発生する時間間隔は,Intervalプロパティに設定する。