[英]Stop watch delay using timer c#
我想在表单中添加一个秒表,但是我制作的秒表落后于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();
}
它可以工作,但是容易延迟。 我已经尝试过更改很多事情,但是没有一个工作。
计时器的滴答声不如您所想的精确。 因此,最好计算开始时间和调用的时间刻度之间的差。
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();
}
您的计时器间隔为100毫秒,因此请为此创建一个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");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.