玄関へお回り下さい。
指定の時間待つ(待機中他の処理を受付CPUの負担軽減)             (SNo.082)
使用コントロール Button1
その他条件 WindowsXP  Visual Basic .NET 2003 
 
★ 指定の時間待つ(待機中他の処理を受付CPUの負担軽減)

Private Sub sWaitTime(ByVal st As Long)
'指定の時間待つ(1/1000 秒単位で指定)
    Dim lngSt As Long
    'システム起動後のミリ秒単位の経過時間を取得します。
    'システムが 24.9 日間稼動し続けた場合、この経過時間は 0 に戻ります。
    lngSt = System.Environment.TickCount
    Do While System.Environment.TickCount - lngSt < st
        'メッセージ キューに現在ある Windows メッセージをすべて処理します
        Application.DoEvents()              'こちらだけではCPUの使用率が100%になる
        '指定した時間だけ現在のスレッドを中断します。
        System.Threading.Thread.Sleep(10)   'これだけでは他の処理を受け付けない
    Loop
End Sub

   
'使用例
Private Sub Button1_Click(ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) Handles Button1.Click
    Label1.Text = "5秒後に消去します。"
    Call sWaitTime(5000)
    Label1.Text = ""
End Sub

ただ、単に待つだけなら、System.Threading.Thread.Sleep(5000) でもいいのですが、待機中は、他の処理を受け付けてくれず、Application.DoEvents() で待機していたのでは、CPUの使用率が100%になったままです。
従って、両方の長所を利用して、待機中も他の処理ができ、CPUの負担が軽減できる待機関数を作成しました。





2004/05/08
2005/10/07


VBレスキュー(花ちゃん)
VB.NET2003  VB2005