始终检查特定文件是否存在但消息框始终显示的C#代码行,为什么会这样?

时间:2012-11-17 12:20:09

标签: c# timer

我的应用程序成功检测到我想要检测的特定文件但消息框不仅显示一次,而且多次显示我不知道错误。

附带问题这是一个总是检查某个文件是否存在的好方法吗?还是有更好更准确的方法?如果有任何建议或链接将是一个很大的帮助。谢谢!

这是我的代码:

private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (File.Exists(patch_to_checked))
            {
                MessageBox.Show("File Found!");
                timer1.Stop();
            }
        }

3 个答案:

答案 0 :(得分:4)

输入功能后应立即停止计时器。否则,当用户将光标移动到按钮以关闭消息框时,计时器正在滴答:

    private void timer1_Tick(object sender, EventArgs e)
    {
        timer1.Stop();

        if (File.Exists(patch_to_checked))
        {
            MessageBox.Show("File Found!");
        }
        else
        {
            timer1.Start();
        }
    }

答案 1 :(得分:2)

您需要在显示对话框之前停止计时器。

这样做的原因是,当显示对话框(模态)时,“计时器到达”(“Tick”)事件排队。然后,当对话框被解除时,另一个这样的消息被传递到您的应用程序,导致代码再次执行,再次显示该对话框。

您还可以通过以不阻止导致显示消息的线程的方式显示消息来解决此问题,以便立即继续执行下一个语句。但通常情况下,如果您需要执行模态或长时间运行操作,最好在处理Tick事件时停止计时器。

答案 2 :(得分:1)

private void timer1_Tick(object sender, EventArgs e)
{
     timer1.Stop();
     if (File.Exists(patch_to_checked))
     {
          MessageBox.Show("File Found!");
     }
    else
     {
        timer1.Start();
     }
}

重新绘制屏幕需要一些时间,因为计时器间隔时间短,所以重绘但感觉不舒服