2011-05-31 12 views
12

¿Hay una función de suspensión simple en Visual Basic que no involucre el subproceso?Función de suspensión Visual Basic

Algo similar como existe en: C: sleep(1);

También probamos este código:

Declare Sub Sleep Lib "kernel32" (ByVal milliseconds As Long) 
' pause for 5 seconds 
Sleep 5000 

... pero no funcionó. Me dio este error:

PInvokeStackImbalance was detected Message: A call to PInvoke function 'Ganzenbordspel!Ganzenbordspel.Spel::Sleep' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.

Respuesta

15

Dado que usted está planteando .NET, debe cambiar el parámetro de Long a Integer. El entero de .NET es de 32 bits. (Número entero de VB clásico fue sólo de 16 bits.)

Declare Sub Sleep Lib "kernel32.dll" (ByVal Milliseconds As Integer) 

Realmente sin embargo, el método de gestión no es difícil ...

System.Threading.Thread.CurrentThread.Sleep(5000) 

tener cuidado cuando se hace esto. En una aplicación de formularios, bloquea la bomba de mensajes y lo que no, haciendo que su programa parezca bloqueado. Rara vez es sleep una buena idea.

25

Este es mucho más fácil.

Threading.Thread.Sleep(3000)