C#在Timer Tick中运行相同的MessageBox 2次

时间:2014-04-30 08:55:23

标签: c# visual-studio-2010 timer messagebox

我用C#从php读取时间。当时间相等时,我必须在Logoff窗口之前显示MessageBox。但是当我运行程序时它会显示相同的MessageBox 2时间。我想在Logoff之前只显示MessageBox 1次。我设置Interval是30,000。怎么做?这是我的代码

        private void timer1_Tick(object sender, EventArgs e)
        {
            bool showingBox = false;
            timer1.Start();
            WebClient client = new WebClient();
            Stream stream = client.OpenRead("http://172.22.22.20/time.php");
            StreamReader reader = new StreamReader(stream);
            String content = reader.ReadToEnd();
            //textBox1.Text = content;

            if (showingBox) return;
            showingBox = true;
            try
            {

                if (content == "08:00")
                {

                    MessageBox.Show(new Form() { TopMost = true }, "11111");  // This will show 2 Message Box when time = 08.00

                }
            }
            finally
            {
                showingBox = false;
            }

            if (content == "08:05")
            {

                ExitWindowsEx(4, 0);

            }

            timer1.Enabled = false;
        }

        }

    }

3 个答案:

答案 0 :(得分:1)

我不知道我是否理解你的问题,但是你可能是两次启动计时器吗? 据我所知,你在timer_tick方法中再次启动计时器

   private void timer1_Tick(object sender, EventArgs e)
        {
            bool showingBox = false;
            timer1.Start(); // <-- second time startet.

答案 1 :(得分:0)

为什么在timer1_Tick事件中使用 timer1.Start();

答案 2 :(得分:0)

我删除了 timer1.Start(),但它也显示了两次messagebox。我更改代码,如 flag = true; 必须在显示消息框之前运行。现在它工作!!。

      if (content == "10:09")
      {
          if (!flag)
          {
              flag = true;
              MessageBox.Show(new Form() { TopMost = true }, "11111" +flag);

          }
      }