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

时间:2015-09-14 12:12:51

标签: c# if-statement timer messagebox

我试图找出为什么只有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;

有人能够看到我在某个地方出错吗?

2 个答案:

答案 0 :(得分:3)

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

因此,请按以下方式修改代码:

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

答案 1 :(得分:0)

MessageBox会导致暂停运行,这会让您的事件再次触发,甚至在您的bool变量变为true之前。尝试将你的bool放在messagebox

之前