指定の時間待つ(待機中他の処理を受付CPUの負担軽減) (SNo.082) | |
使用コントロール | Button1 |
その他条件 | WindowsXP Visual Basic .NET 2003 |
★ 指定の時間待つ(待機中他の処理を受付CPUの負担軽減)
Private Sub Button1_Click(ByVal sender As System.Object, _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 '使用例 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の負担が軽減できる待機関数を作成しました。 |