我在项目中使用两个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/