プログラム言語 タイマー

概要

一定期間毎に、定めた処理を定期的に行わせる処理。

同期処理

タイマーで指定した処理(n回目)が終わる前に、次の処理(n+1回目)が始まる場合。
n回目の処理が終わってからn+1回目の処理が始まる。
処理に必要な時間は、処理を行わせる時間の間隔内に収める必要がある。

timer_c
IntervalTickイベントを発生させる間隔を設定

private int myTime = 0;

private void Form1_Load(object sender, EventArgs e)
{
  //timer開始
  myTimer.Enabled = true;
}

//Intervalで設定した間隔で発生する
private void myTimer_Tick(object sender, EventArgs e)
{
  myTime += 1;
  myLabel.Text = myTime.ToString();

  if (myTime == 10)
  {
    //timerを破棄
    myTimer.Dispose();
  }
}

↓Form1.Designer.csにてイベントハンドラを追加しておく事
private void myTimer_Disposed(object sender, EventArgs e)
{
  ↑ のDisposeによってここが呼ばれる
  ~
}

【Form1.Designer.cs】
private void InitializeComponent()
{
  //
  // myTimer
  //
  this.myTimer.Interval = 1000;
  this.myTimer.Tick += new System.EventHandler(this.myTimer_Tick);
  //↓ この行を手動で追加
  this.myTimer.Disposed += new System.EventHandler(this.myTimer_Disposed);
}

timer_vb
IntervalTickイベントを発生させる間隔を設定

Private myTime As Integer = 0

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  //timer開始
  Me.myTimer.Enabled = True
End Sub

Intervalで設定した間隔で発生する
Private Sub myTimer_Tick(sender As Object, e As EventArgs) Handles myTimer.Tick

  myTime += 1
  Me.myLabel.Text = myTime

  If myTime = 10 Then
    //timerを破棄
    Call myTimer.Dispose()
  End If

End Sub

Private Sub myTimer_Disposed(sender As Object, e As EventArgs) Handles myTimer.Disposed
  ↑ のDisposeによってここが呼ばれる
  ~
End Sub

setTimeout()
※指定した時間の後、指定の関するを実行する。
繰り返し無し。時間はミリ(1/1000)。

function fnTest(){
  ~
}

//1秒後にfnTest()を実行
var timer = setTimeout(“fnTest()” , 1000);

//1秒後に匿名関数を実行
var timer = settimeout(function(){

} , 1000);

clearTimeout()
※実行中のtimer(setTimeout)を停止

//fnTest()を即実行
timer = setTimeout(“fnTest()” , 0);

//↑timerを停止
clearTimeout(timer);

//10秒後に再開
timer = setTimeout(“fnTest()” , 10000);

非同期処理

タイマーで指定した処理(n回目)が終わる前に、次の処理(n+1回目)が始まる場合。
n回目の処理の終了に関係なく、n+1回目の処理が始まる。

setInterval()
※指定した一定の間隔で指定した関数を実行
指定した関数の実行の終了を待たず、指定した間隔でまた次の実行が始まる

//1秒に1回、fnTest()を実行
var timer = setInterval(“fnTest()” , 1000);

var timer = setInterval(function(){
  //引数あり関数を実行する場合
  fnTest(100);
} , 1000);

clearInterval()
※実行中のtimer(setInterval)を停止

//fnTest()を即実行
var timer = setInterval(“fnTest()” , 1000);

//↑timerを停止
clearInterval(timer);

//10秒後に再開
timer = setInterval(“fnTest()” , 10000);

Timer開始のタイミング

Form_Loadイベント開始

タイマー起動

Form_Loadイベント終了
※タイマーが起動するのはForm_Loadイベント終了後

Form_Loadイベント開始

タイマー起動(3秒後)

10秒掛かる処理

Form_Loadイベント終了
※タイマーが起動するのはタイマー起動処理から10秒後

Form_Loadイベント開始

タイマー起動(3秒後)

1秒掛かる処理

Form_Loadイベント終了
※タイマーが起動するのはタイマー起動処理から3秒後

Sleep

System.Threading.Thread.Sleep(1000);

System.Threading.Thread.Sleep(1000)

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Call Sleep(1000) ※1秒