如何暂停执行几秒钟并继续循环?

时间:2011-08-10 02:58:47

标签: vb.net delayed-execution

我正在创建一个模拟骰子滚动的小应用程序。为了模拟弹跳,我随机改变了图片的位置。现在要模拟多个弹跳,我使用for循环来连续改变图片框的位置。但它没有按照我的计划发生,表单只显示最后一个循环的位置。我甚至尝试使用System.Threading.Thread.Sleep(1000)希望显示弹跳,但即使它们只显示最后一个循环。

For bounceCount As Integer = 1 To bounces
    bounce(pb_dice1)
    bounce(pb_dice2)
    System.Threading.Thread.Sleep(3000) 'I need to pause here and show the recent change in position then continue after 3 seconds
Next

bounce方法会更改PictureBox的位置。

如何暂停我的for循环,显示新定位的骰子,然后在3秒后继续?

2 个答案:

答案 0 :(得分:5)

在事件处理程序完成执行之前,控件不会刷新其图形。否则,如果对一个或多个控件进行了多处更改,当您真正想要的是最终结果时,它们会反复刷新。

要强制控件刷新图形,您需要在睡眠前插入以下行:

PictureBox1.Refresh()

当然,您可能必须将PictureBox1更改为其他控件的名称。此外,可能值得刷新父控件(即包含骰子的控件)。

答案 1 :(得分:2)

我猜你应该在调用Application.DoEvents()之前使用Sleep()