WPF - 更准确的计时器
WPF - A more accurate Timer
我是 CS 和 WPF 的新手。我将获得一个 DateTime
对象并将其设置为我的计时器的开始。但是我用了DispatcherTimer.Tick
。我可以稍微小心并使用 window 控件来感觉它不准确。它显然与程序的其他功能一起在一个线程中。
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(1);
timer.Tick += timer_Tick;
timer.Start();
void timer_Tick(object sender, EventArgs e)
{
dateTime = dateTime.AddSeconds(1);
TimeTb.Text = dateTime.ToLongTimeString();
}
是否有其他方法可用于更准确的计时器?
当然。看看 System.Diagnostics.Stopwatch
class。您正在重新发明轮子!
不加秒。这是准确的:
private TimeSpan offset;
void timer_Tick(object sender, EventArgs e)
{
TimeTb.Text = (DateTime.Now - offset).ToLongTimeString();
}
如果您想显示自开始时间以来经过的时间:
private DateTime start = DateTime.Now;
void timer_Tick(object sender, EventArgs e)
{
TimeTb.Text = (DateTime.Now - start).ToString();
}
我是 CS 和 WPF 的新手。我将获得一个 DateTime
对象并将其设置为我的计时器的开始。但是我用了DispatcherTimer.Tick
。我可以稍微小心并使用 window 控件来感觉它不准确。它显然与程序的其他功能一起在一个线程中。
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(1);
timer.Tick += timer_Tick;
timer.Start();
void timer_Tick(object sender, EventArgs e)
{
dateTime = dateTime.AddSeconds(1);
TimeTb.Text = dateTime.ToLongTimeString();
}
是否有其他方法可用于更准确的计时器?
当然。看看 System.Diagnostics.Stopwatch
class。您正在重新发明轮子!
不加秒。这是准确的:
private TimeSpan offset;
void timer_Tick(object sender, EventArgs e)
{
TimeTb.Text = (DateTime.Now - offset).ToLongTimeString();
}
如果您想显示自开始时间以来经过的时间:
private DateTime start = DateTime.Now;
void timer_Tick(object sender, EventArgs e)
{
TimeTb.Text = (DateTime.Now - start).ToString();
}