Whileは単にタイマーとして使用しているんですね。
それなら
Private Sub timeWaiteTime(ByVal waiteTime As DateInterval)
Dim startTime As DateTime = Now
While (Now.Subtract(startTime).TotalMilliseconds < waiteTime)
System.Threading.Thread.Sleep(1)
Application.DoEvents()
End While
End Sub
と言う関数を作っておいて
timeWaiteTime(5000)
と呼びだした方がいいかも知れません。