定时器开始时间和结束时间计算额外提供4秒

时间:2014-03-25 10:40:14

标签: c# silverlight timer windows-phone

我正在使用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 : ";

            }            
        }

2 个答案:

答案 0 :(得分:1)

所以你用这个计时器计算滴答数,并且预计在经过1分钟的60个滴答之后,恰好1分钟就会过去。

它不起作用。其他的东西正在应用程序中发生,而.NET从不确保它在<1>之间完全一秒钟。

如果您想要准确性,请使用System.Diagnostics.Stopwatch根据系统时钟给出非常准确的经过时间。

答案 1 :(得分:1)

您使用错误的工具计算时间。你应该StopWatch而不是计时器。定时器用于执行定期发生的事情。