我正在开发适用于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秒
问题是什么?
答案 0 :(得分:1)
Windows和相关的API不是“实时”。您的计时器间隔非常小,以至于Windows无法按照您要求的计划对其进行维护。
使用非实时操作系统和API,您无法假设计时器实际上是在您要求的时间间隔内发出信号。您需要自己跟踪实际时间(例如,使用System.Diagnostics.Stopwatch
课程)并适应您的体验变化。