VB.Net暂停代码

时间:2013-09-01 01:32:44

标签: windows vb.net wait

我目前正在尝试制作一款简单的老虎机应用。我试图让它像一个传统的老虎机与旋转器通过,并显示不同的图片。我一直在尝试使用在这里的许多类似帖子中发现的睡眠命令,但它一直在崩溃我的程序。我测试的最后一个系数如下:

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

任何人都可以建议我需要改变什么吗?我想让它弹出几个不同的数字,并在每秒之间切换它们。感谢您提供的任何帮助

2 个答案:

答案 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()