我使用此代码: -
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
If button.Location.Y >= 618 Then
MessageBox.Show("You lost!", "Failure", MessageBoxButtons.RetryCancel)
Timer1.Enabled = False
End If
End Sub
让我们假设条件总是为真然后代替禁用timer1,它显示消息框无限次。但是如果我首先写Timer.enable = false然后是messagebox然后计时器停止。为什么会发生这种情况
答案 0 :(得分:1)
因为嘀嗒声是围绕异步方式发射的。如果前一个没有完成,则可以同时进行多个刻度线执行(并且在您的情况下它没有,因为它等待消息Box被点击掉)。这意味着当消息框正在等待" Ok"其他蜱事件正在解雇(因为你还没有到达被禁用的部分)。
您可能希望在MessageBox之前放置Timer1.Enabled = false,尽管可能仍然可能遇到竞争条件,但不太可能,您想要测试它。