# SetTimer

マニュアル > コントロールリファレンス > 全コントロール共通 > 共通メソッド > # SetTimer |

| タイマーを開始する。 構文 SetTimer( TimerID, Interval [,Counter = -1] [,DelayRecoveryRate = 0] [,DelayStackTime = 10000] ) パラメータ
TimerID
| 型： | 数値
| タイマーID。
Interval
| 型： | 数値
| タイマー周期（ms単位）。
Counter
| 型： | 数値
| タイマー発生回数。-1の時、永久に発生させる。
DelayRecoveryRate
| 型： | 数値
| 0から1で指定。最大[DelayRecoveryRate x 100]%だけタイマ周期の遅れ時間をリカバリーする。1指定時遅れ時間を100%リカバリーする。0指定時はリカバリーしない。
DelayStackTime
| 型： | 数値
| msで指定。最大[DelayStackTime]msまで更新周期の遅れ時間を蓄積する。
戻り値
| 型： | ブール
| FALSE - 失敗。TRUE - 成功。
解説
タイマーを開始します。SetTimer後、Interval で指定した時間経過後、OnTimer イベントが発生します。 Counterに1以上の数を指定した場合、その回数分だけOnTimer が発生し、タイマーは自動的に停止されます。 タイマーの発生中は、KillTimer でタイマーを中止させることができます。OnTimer イベントではタイマーIDが引数で渡されます。 複数のタイマーを開始する場合には、それぞれのタイマーIDが重複しないように指定してください（タイマーを発生させるコントロールが異なる場合は重複しても問題ありません）。 OnTimer イベントでは、引数で受け取ったタイマーIDをチェックしてどのタイマーが発生したのかを判別できます。
例
例1）タイマーID1、1秒周期のタイマーを指定。
    this.SetTimer(1, 1000);
上記例では、DelayRecoveryRate を指定しないことにより、複数の処理が重なってタイマー発生が遅れた場合でも、今回発生した時刻を元に次回のタイマーを発生させます。 そのため処理が重いとタイマーがどんどん遅れていきますが、処理の負荷は一定化され、ボタンを押すなどのマウスの反応も一定化されます。定周期性をあまり重視しない場合に適しています。VBなどはこのタイプのタイマーです。 例2）タイマーID1、1秒周期のタイマーを指定。リカバリーレート20%を指定。指定。
    this.SetTimer(1, 1000, -1, 0.2, 10000);
上記例では、DelayRecoveryRate を20%で指定しています。他の処理でタイマーの発生が遅れた場合、次回のタイマー発生を早く発生させることにより、定周期性を確保します。 例えばタイマー発生が500ms遅れた場合、次回以降のタイマーは500ms x 0.2=100ms分だけタイマーを早く発生させます。 遅れ時間の積算値が0になるまで、タイマーを少しづつ早く発生させ、結果として単位時間あたりに発生するタイマー回数（１秒周期の場合、１分に60回など）を一定にたもとうとします。 複数の処理が複数のタイマーで実行される場合、定周期性を確保しようとするため、複数の処理が連続して行われる場合が多くなり、結果としてマウスの反応が鈍くなるなどの欠点があります。
サポート対象
| ○ | スクリプトアクション
サーバのスクリプトVer2アクションで使用可能
| ○ |
ブラウザスクリプト
ブラウザのスクリプトにて使用可能
| × |
演算式構文
演算式構文（バインド書式など）にて使用可能
参照 SetTimer KillTimer KillAllTimer