if 语句中的所有项目均未触发

All items in if statement not firing

我想弄清楚为什么只有 if 语句中的第一行是唯一被执行的行。

bool messageDisplayed = false;

private void timer1_Tick(object sender, EventArgs e)
{
    var position = axVLCPlugin21.input.Position;

    label1.Text = string.Format("{0}% completed", position * 100);

    if (position > 0.8 && messageDisplayed == false)
    {
        MessageBox.Show("80 has been passed");
        messageDisplayed = true;
    }
}

消息框不断出现,让我相信messageDisplayed = true从未被设置,所以我设置了一个断点来检查。

果然,它进入了 if 语句,显示了消息框,然后重新启动了事件——根本没有去 messageDisplayed = true;

有人能看出我哪里出错了吗?

MessageBox.Show() "pauses" 代码的执行。 messageDisplayed = true; 在您关闭 MessageBox 时触发。

因此,修改您的代码如下:

if (position > 0.8 && !messageDisplayed)
{
    messageDisplayed = true;
    MessageBox.Show("80 has been passed");
}

MessageBox 导致 运行 暂停,这让您可以再次触发事件,甚至在您的 bool 变量变为真之前。试着把你的 bool 放在 messagebox

之前