我目前正在尝试制作一款简单的老虎机应用。我试图让它像一个传统的老虎机与旋转器通过,并显示不同的图片。我一直在尝试使用在这里的许多类似帖子中发现的睡眠命令,但它一直在崩溃我的程序。我测试的最后一个系数如下:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Label1.Text = CStr(Int(Rnd() * 10)) 'pick numbers
Label2.Text = CStr(Int(Rnd() * 10))
Label3.Text = CStr(Int(Rnd() * 10))
Threading.Thread.Sleep(1000)
Label1.Text = CStr(Int(Rnd() * 10)) 'pick numbers
Label2.Text = CStr(Int(Rnd() * 10))
Label3.Text = CStr(Int(Rnd() * 10))
Threading.Thread.Sleep(1000)
Label1.Text = CStr(Int(Rnd() * 10)) 'pick numbers
Label2.Text = CStr(Int(Rnd() * 10))
Label3.Text = CStr(Int(Rnd() * 10))
Threading.Thread.Sleep(1000)
End Sub
任何人都可以建议我需要改变什么吗?我想让它弹出几个不同的数字,并在每秒之间切换它们。感谢您提供的任何帮助
答案 0 :(得分:1)
不要在UI线程上调用Sleep
。
当您的代码在UI线程上运行时,UI无法更新 因此,你所有的方法都注定要失败。
相反,请了解新的Async
language功能并编写
Await Task.Delay(1000)
答案 1 :(得分:0)
您不需要声明kernel32本机函数,因为Threading.Thread.Sleep()对托管代码执行相同的操作。后者是首选,实际上你已经在事件处理程序中使用了它。
请参阅Any difference between kernel32.dll Sleep and Thread.Sleep()