定时器在C#中连续发射,无法停止

时间:2012-06-09 13:15:05

标签: c# .net timer

任何人都可以帮我在Windows窗体C3应用程序中停止我的计时器吗?我使用设计器在表单中添加了计时器,间隔设置为1000;按钮点击后等待5秒钟后我想做一些动作。请检查代码并告知我。现在的问题是我无限地获得MessageBox2并且永远不会让计时器停止。

static int count;

public Form1()
        {
            InitializeComponent(); 
            timer1.Tick += timer1_Tick;
        }
public void button1_Click(object sender, EventArgs e)
        {

        timer1.Enabled = true;

        while(count>5)
         {
          ....dosome actions...
         }

        }
private void timer1_Tick(object sender, EventArgs e)
        {
            count1++;
           MessageBox.Show("Messagebox2");
           if (count1 == 5)
           {
               //timer1.Enabled = false; timer1.Stop(); 
               ((System.Timers.Timer)sender).Enabled = false;
               MessageBox.Show("stopping timer");
           }
        }

3 个答案:

答案 0 :(得分:2)

我会将count无用,只需使用timer 1 interval属性并将您的操作放入timer1_Tick事件中。

  public void button1_Click(object sender, EventArgs e)
    {
          timer1.Interval = 5000;
          timer1.Enabled = true;
    }

   private void timer1_Tick(object sender, EventArgs e)
   {
        timer1.Enabled = false;  
        MessageBox.Show("stopping timer");
        // Your other actions here
   }

答案 1 :(得分:0)

您正在递增count1并检查count

while(count1 > 5)
{
    ...dosome actions...
}

答案 2 :(得分:0)

你使用哪个计时器?因为C#支持来自两个不同命名空间的类Timer。一个来自Forms,另一个来自System.Timers。我建议你使用另一个 - System.Timers.Timer。

                Timer t = new Timer(20000); // created with 20seconds
            t.Enabled = true; // enables firing Elapsed event
            t.Elapsed += (s, e) => {
                \\do stuff
            };

            t.Start();

在这个简短的代码中,您可以看到如何创建和启用计时器。通过注册Elapsed事件,您可以明确说明在经过一段时间后该怎么做。这只做了一次。当然,在达到限制之前用户点击按钮需要进行一些更改。但这在很大程度上取决于您所要求的行为的行为。