Функция сна Visual Basic - PullRequest
12 голосов
/ 31 мая 2011

Есть ли в Visual Basic простая функция сна, которая не связана с потоками.

Нечто похожее существует в: C: sleep(1);

Мы также попробовали этот код:

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

... но это не сработало. Это дало мне эту ошибку:

PInvokeStackImbalance был обнаружен Сообщение: вызов функции PInvoke 'Ganzenbordspel! Ganzenbordspel.Spel :: Sleep' разбалансировал стек. Это скорее всего потому, что управляемый ПИнвок подпись не соответствует неуправляемой целевая подпись. Проверьте, что соглашение о вызовах и параметры подпись PInvoke соответствует цели неуправляемая подпись.

Ответы [ 2 ]

27 голосов
/ 13 декабря 2014

Это намного проще.

Threading.Thread.Sleep(3000)
17 голосов
/ 01 июня 2011

Поскольку вы спрашиваете о .NET, вам следует изменить параметр с Long на Integer. Целое число .NET является 32-разрядным. (Целое число классического VB было только 16-разрядным.)

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

Правда, управляемый метод не сложен ...

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

Будьте осторожны, когда делаете это. В приложении форм вы блокируете рассылку сообщений, а что нет, из-за чего ваша программа кажется зависшей. Редко sleep хорошая идея.

...