为什么一点按钮就死机?高手帮忙解决一下

来源:百度知道 编辑:UC知道 时间:2024/06/07 16:24:20
为什么一点按钮就死机?高手帮忙解决一下(代码如下)

Private Sub Command1_Click()
Do
Line4.X1 = Line4.X1 + 1
Loop Until Shape1.Left >= Line2.X1 - Shape1.Width (line2是不动的)
End Sub

Private Sub Timer1_Timer()
Shape1.Left = Shape1.Left + 100
End Sub
但是timer不是一直在让shape1运动吗?怎么会死循环呢?

Timer的优先级很低的,你可以做个试验,把Timer1.Interval设成1000,你会发现实际两次Timer1_Timer的时间总大于1s,系统忙的时候就顾不上Timer了

command1 是按钮,点一次运行一次,儿timer控件是循环控件,不知道你设置的时间是多少,时间控件是死循环,运行窗口之后时间控件就开始运行,当然是死循环了

其实你只需在DO里面加一句Doevents,就能看出效果了。

死循环了。循环终止条件shape1.left<line2.x1-shape1.width等价于shape1.left+shape1.width<line2.x1.左端是shape1的右侧坐标,是不变的。所以不等式两端都是不变量,循环不终止!

死循环占据了所有CPU,Timer1_Timer根本没时间处理
建议重写

line4.x1变line2.x1