我在Windows窗体应用程序中使用了2个计时器(timer1
和timer2
)和1个秒表(watch
)。 timer1
完成后,watch
工作已停止,timer2
开始工作。我的问题是:watch
中timer1
的停止时间不等于watch
中timer2
的初始值。定时器的间隔值相等,它是25毫秒如何防止定时器中watch
启动和停止值之间的时间差?这是我的代码;
Stopwatch watch=new Stopwatch();
private void timer1_Tick(object sender, EventArgs e)
{
watch.Start();
var time = watch.Elapsed.TotalSeconds;
.
.
.
watch.stop();
}
private void timer2_Tick(object sender, EventArgs e)
{
watch.Start();
var time = watch.Elapsed.TotalSeconds;
.
.
.
watch.stop();
}
答案 0 :(得分:0)
首先,你实际上无法获得相同的启动和停止时间 - 它们之间存在处理时间。 接下来,根据Windows.Forms.Timer的文档:
Windows窗体计时器组件是单线程的,精度限制为55毫秒。如果需要更高精度的多线程计时器,请使用System.Timers命名空间中的Timer类。
(link)
因此,您的计时器值低于准确度。
我认为,解决这个问题的唯一方法是将所有代码放在一个计时器中,这样timer2动作就会在timer1动作之后立即完成。
编辑:既然你没有说出什么是计时器,我认为那是WinForms计时器。对不起,如果我错了。