web-dev-qa-db-fra.com

Fonction de veille Visual Basic

Existe-t-il une fonction de veille simple dans Visual Basic qui n'implique pas de thread.

Quelque chose de similaire existe dans: C: sleep(1);

Nous avons également essayé ce code:

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

... mais ça n'a pas marché. Cela m'a donné cette erreur:

PInvokeStackImbalance a été détecté Message: Un appel à la fonction PInvoke 'Ganzenbordspel! Ganzenbordspel.Spel :: Sleep' a déséquilibré la pile. Cela est probablement dû au fait que la signature PInvoke gérée ne correspond pas à la signature cible non gérée. Vérifiez que la convention d'appel et les paramètres de la signature PInvoke correspondent à la signature non gérée cible.

12
Jef Klak

Celui-ci est beaucoup plus simple.

Threading.Thread.Sleep(3000)
27
Helping

Puisque vous posez des questions sur .NET, vous devez modifier le paramètre de Long à Integer. L'entier de .NET est 32 bits. (L'entier de Classic VB n'était que de 16 bits.)

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

Mais vraiment, la méthode managée n'est pas difficile ...

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

Soyez prudent lorsque vous faites cela. Dans une application de formulaires, vous bloquez la pompe de messages et ce qui ne l'est pas, ce qui donne l'impression que votre programme a été bloqué. sleep est rarement une bonne idée.

17
Brad