停止手表延迟使用定时器c#
本文关键字:定时器 延迟 手表 | 更新日期: 2023-09-27 18:06:12
我想添加一个秒表到我的形式,但我所做的是落后于其他定时器在pc的时间。你能给出解决办法吗?(我的计时器间隔是100)。这是我的代码:
int min, sec, ms = 0;
private void timer1_Tick(object sender, EventArgs e)
{
Time.Text = min + ":" + sec + ":" + ms.ToString();
ms++;
if (ms > 9)
{
ms = 0;
sec++;
}
if (sec > 59)
{
sec = 0;
min++;
}
}
private void timer_Click(object sender, EventArgs e)
{
timer1.Start();
}
它工作,但容易延迟。我试图改变很多事情,但没有一个是有效的。
计时器的滴答声并不像你想象的那么精确。因此,如果您计算开始时间和tick调用时间之间的差值会更好。
DateTime startTime = DateTime.Now;
private void timer1_Tick(object sender, EventArgs e)
{
Time.Text = DateTime.Now.Subtract(startTime).ToString(@"mm':ss'.ff");
}
private void timer_Click(object sender, EventArgs e)
{
startTime = DateTime.Now;
timer1.Start();
}
你的计时器间隔是100ms,所以创建一个TimeSpan对象,作为一个类变量,
TimeSpan _100ms = new TimeSpan(0,0,0,0,100);
将这个添加到你用来跟踪时间的TimeSpan对象中
TimeSpan ts = new TimeSpan();
ts = ts.Add(_100ms);
显示在UI中:
private void timer1_Tick(object sender, EventArgs e)
{
ts = ts.Add(_100ms);
Time.Text = ts.ToString(@"hh':mm':ss'.fff");
}
小提琴演示