计时器与TimeSpan的工作时间不是毫秒级

时间:2014-11-02 20:07:40

标签: c# windows-phone-8 timer

我正在开发适用于Windows Phone 8的应用 我创建了一个DispatcherTimer

DispatcherTimer Timer= new DispatcherTimer();
 private int TimePass;
 public TapFast()
    {
        TimePass = 0;
        Timer.Tick += new EventHandler(TimePassTick);
        Timer.Interval = TimeSpan.FromMilliseconds(1);
        InitializeComponent();
    }

 public void TimePassTick(Object sender, EventArgs args)
    {

         TimePass++;

         TimeSpan t = TimeSpan.FromMilliseconds(TimePass);
         string answer = string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D4}ms",
                                 t.Hours,
                                 t.Minutes,
                                 t.Seconds,
                                 t.Milliseconds);


         time.Text = answer;
     }

当我启动计时器时,我在TextBlock中没有得到正确的结果

1秒= 1000毫秒

我必须在 1 秒内看到 0 的值增加到 1000 但到达1000毫秒需要18-20秒

问题是什么?

1 个答案:

答案 0 :(得分:1)

Windows和相关的API不是“实时”。您的计时器间隔非常小,以至于Windows无法按照您要求的计划对其进行维护。

使用非实时操作系统和API,您无法假设计时器实际上是在您要求的时间间隔内发出信号。您需要自己跟踪实际时间(例如,使用System.Diagnostics.Stopwatch课程)并适应您的体验变化。