プログラム言語 タイマー
概要
一定期間毎に、定めた処理を定期的に行わせる処理。
同期処理
タイマーで指定した処理(n回目)が終わる前に、次の処理(n+1回目)が始まる場合。
n回目の処理が終わってからn+1回目の処理が始まる。
処理に必要な時間は、処理を行わせる時間の間隔内に収める必要がある。
※IntervalでTickイベントを発生させる間隔を設定
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);
}
※IntervalでTickイベントを発生させる間隔を設定
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
※指定した時間の後、指定の関するを実行する。
繰り返し無し。時間はミリ(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回目の処理が始まる。
※指定した一定の間隔で指定した関数を実行
指定した関数の実行の終了を待たず、指定した間隔でまた次の実行が始まる
//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秒後