vb 中的基本计时器错误

Basic timer error in vb

我使用这个代码:-

    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 然后计时器停止,它会显示消息框无限 times.But。为什么会这样

因为 tick 以异步方式进行循环触发。如果前一个报价尚未完成,则可能会同时执行多个报价单(并且在您的情况下还没有完成,因为它正在等待 MessageBox 被点击)。这意味着当消息框正在等待 "Ok" 时,其他滴答事件正在触发(因为您还没有到达禁用部分)。

您可能希望将 Timer1.Enabled = false 放在 MessageBox 之前,尽管这仍然可能 运行 进入竞争条件,但不太可能,您需要测试一下。