if语句中的所有项都未触发

本文关键字:语句 if | 更新日期: 2023-09-27 18:12:35

我想弄清楚为什么只有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;

有没有人能看出我哪里出了问题?

if语句中的所有项都未触发

MessageBox.Show() "暂停"执行代码。关闭MessageBox触发messageDisplayed = true;

因此,按如下方式修改代码:
if (position > 0.8 && !messageDisplayed)
{
    messageDisplayed = true;
    MessageBox.Show("80 has been passed");
}

MessageBox导致运行暂停,这允许您再次触发事件,甚至在bool变量变为真之前。尝试将bool值放在messagebox

之前