我正在使用WP8,我正在使用计时器来计算总时间。
我正是这样做的:
timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(1);//interval for timer is 1 sec
timer.Tick += new EventHandler(timer_Tick);//after the timer expires, this event is fired
timer.Start();
startDateTime = DateTime.Now;
DateTime et = DateTime.Now;
Debug.WriteLine("st is "+startDateTime+ " et is "+et);
TimeSpan myDateResult = et - startDateTime;
double seconds = myDateResult.TotalSeconds;
Debug.WriteLine("difference is " + seconds);
我得到的输出:
st is 3/25/2014 3:54:09 PM et is 3/25/2014 3:55:14 PM
difference is 64.312636
所以我完全跑了1分钟然后它给我64秒作为输出。为什么这样?这是一个错误吗?
修改
Here timerCount value is 60;
private void timer_Tick(object sender, EventArgs e)
{
timerCount--;
if (timerCount > 0)
{
TimerText.Text = "Timer : "+timerCount.ToString();
}
else
{
TimerText.Text = "Timer : ";
}
}
答案 0 :(得分:1)
所以你用这个计时器计算滴答数,并且预计在经过1分钟的60个滴答之后,恰好1分钟就会过去。
它不起作用。其他的东西正在应用程序中发生,而.NET从不确保它在<1>之间完全一秒钟。
如果您想要准确性,请使用System.Diagnostics.Stopwatch
根据系统时钟给出非常准确的经过时间。
答案 1 :(得分:1)
您使用错误的工具计算时间。你应该StopWatch而不是计时器。定时器用于执行定期发生的事情。