问题描述
|
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 ::睡眠\'
已使堆栈不平衡。这是
可能是因为托管PInvoke
签名与非托管签名不匹配
目标签名。检查
调用约定和参数
PInvoke签名与目标匹配
非托管签名。
解决方法
这很容易。
Threading.Thread.Sleep(3000)
, 由于您正在询问.NET,因此应将参数从Long
更改为Integer
。 .NET的Integer是32位的。 (经典VB的整数只有16位。)
Declare Sub Sleep Lib \"kernel32.dll\" (ByVal Milliseconds As Integer)
确实,托管方法并不难...
System.Threading.Thread.CurrentThread.Sleep(5000)
执行此操作时请小心。在表单应用程序中,您阻止了消息泵,而没有阻止消息泵,从而使程序似乎已挂起。 sleep
是个好主意。