繁体   English   中英

使用计时器C#停止观看延迟

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM