我在项目中使用两个System.Windows.Forms.Timer对象,如下所示。

private void Form1_Load(object sender, EventArgs e)
{
    timer1.Interval = 60000;
    timer2.Interval = 62000;
    timer1.Start();
}

private void timer1_Tick(object sender, EventArgs e)
{
    Console.WriteLine("Timer1 :" + DateTime.Now.ToString());
    timer2.Start();
}

private void timer2_Tick(object sender, EventArgs e)
{
    Console.WriteLine("Timer2 :" + DateTime.Now.ToString());
    timer2.Stop();
}


输出结果是:

Timer1 :05/30/2011 12:15:57 AM      (12:16:59)
Timer1 :05/30/2011 12:16:57 AM      (12:17:59) miss
Timer2 :05/30/2011 12:16:59 AM

Timer1 :05/30/2011 12:17:57 AM      (12:18:59)
Timer1 :05/30/2011 12:18:57 AM      (12:19:59) miss
Timer2 :05/30/2011 12:18:59 AM

Timer1 :05/30/2011 12:19:57 AM      (12:20:59)
Timer1 :05/30/2011 12:20:57 AM      (12:21:59) miss
Timer2 :05/30/2011 12:20:59 AM


我不明白为什么计时器2每隔第二个计时器都会丢失。

我的意思是Timer2应该在12:17:59开始,而Timer1应该在12:16:57 AM开始。

如何更改它以获得正确的算法?

最佳答案

我不确定为什么要这样做,但是它按您的设计工作。当timer1滴答时,它将输出一条消息并打开timer2。然后,timer1再次滴答,但是timer2已经打开,因此那里什么也没有发生。然后Timer2滴答并关闭。这就是为什么每个timer2都有两个timer1的原因。再次尝试将其打开时,Timer2已在运行。

如果您确实希望此方法正常工作,则可能需要添加第三个计时器,然后在这两个计时器之间切换。检查timer2是否正在运行,如果正在运行,请启动timer3。否则,启动timer2。

关于c# - C#中的计时器问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6169110/

10-12 04:49