visual studio 2010-C#在Timer Tick中运行相同的MessageBox 2次

本文关键字:MessageBox 2次 运行 2010-C# studio Timer Tick visual | 更新日期: 2023-09-27 18:01:08

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

        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;
        }
        }
    }

visual studio 2010-C#在Timer Tick中运行相同的MessageBox 2次

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

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

为什么使用timer1.Start((在timer1_Tick Event中?

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

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