我在我的项目中使用了两个 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
我不明白为什么 timer2 的 timer1 的每秒钟都丢失了。
我的意思是 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/