es que sleep detiene la ejecucion total de la aplicacion, para simular una demora o pausa (tipo sleep pero sin que se trabe todo), debes hacer un bucle que ejecute el
Application.DoEvents() y que termine cuando se cumpla una condicion, en este caso cuando se cumpla la cantidad de segundos que vos quieras, te haces una simple funcion y la llamas con los segundos como parametro.
aca te paso un ejemplo de pausa que no traba la aplicacion.
Código vb:
Ver originalPublic Class Form1
Private Sub Pausa(ByVal pSegundos As Integer)
Dim vInicio As Integer = Environment.TickCount()
While ((Environment.TickCount() - vInicio) <= pSegundos)
Application.DoEvents()
End While
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
For i As Integer = 1 To 30
TextBox1.Text = i
Call Pausa(1000)
Next
End Sub
End Class
al apretar el boton se va sumando 1 al valor del textbox y con una pausa de 1 segundo, esta no traba la pantalla y podes mover los controles y la pantalla. sin embargo dicen que el DoEvents ocupa mucho procesador, pero bueno no creo que sea tan drastico por esos segundos.
saludos.