web-dev-qa-db-ja.com

スリープ機能Visual Basic

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署名が管理されていないターゲット署名と一致しないためです。 PInvoke署名の呼び出し規則とパラメーターが、ターゲットのアンマネージ署名と一致することを確認します。

12
Jef Klak

これはとても簡単です。

Threading.Thread.Sleep(3000)
27
Helping

.NETについて尋ねているので、パラメーターをLongからIntegerに変更する必要があります。 .NETの整数は32ビットです。 (クラシックVBの整数は16ビットのみでした。)

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

本当に、マネージド方式は難しくありません...

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

これを行うときは注意してください。フォームアプリケーションでは、メッセージポンプとそうでないものをブロックし、プログラムがハングしたように見せます。 sleepが良いアイデアになることはめったにありません。

17
Brad