投稿者 あにす  (社会人) 投稿日時 2009/10/23 08:35:54
ごく短い間隔で処理をしたい場合で、かつPCのCPUの大部分を占有してもよい場合には(PCゲーム等がそうですね)下記のような方法が使われることがあります。
waitの値を変えることで0.001秒間隔まで短い間隔で実行するように記述することが出来ます。ただ、実際にその間隔で実行されるかどうかは実行するPCの性能次第です。

通常このようなループでの処理は、ループ内の処理中にWindowsのメッセージが処理されないため、アプリケーションが応答無しの状態になる原因になるのですが、Application.DoEvents()メソッドでWindowsのメッセージを処理させることでこの問題を回避しています。

Module Module1
    Public Sub Main()
        Dim mainForm As New Form()
        mainForm.Show()

        Dim nextWork As Double = Environment.TickCount
        Dim wait As Double = 10     '0.01秒は10ミリ秒 
        Dim currentTime As Double

        While mainForm.Created
            currentTime = Environment.TickCount

            If currentTime >= nextWork Then
                'ここで処理をする 

                nextWork = nextWork + wait
            End If

            Application.DoEvents()
        End While
    End Sub
End Module