C# Windows Phone 8.1 定期定时器的不一致定时器问题
C# Windows Phone 8.1 Inconsistent Timer Issues with Periodic Timer
我正在尝试让背景无限闪烁一种颜色。我有一些东西大部分都在工作,但我注意到颜色闪烁之间的时间间隔非常不一致 - 有时很快,有时则很慢。
如果我不使用 PeriodicTimer 函数调用,背景会非常一致地闪烁大约 1 秒。但是,计时器在大约 1.5 - 2 分钟后到期,这不是我想要的。我想知道是否有更好的方法来实现这个,而不是使用两个计时器。目前,我需要第二个计时器来延迟切换颜色之间的时间。
ThreadPoolTimer.CreatePeriodicTimer(elapsedHandle, TimeSpan.FromSeconds(1));
耗时处理程序:
private void elapsedHandle(ThreadPoolTimer timer)
{
Timer flashTimer = new Timer(Callback, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1));
}
回调函数:
private void Callback(object state)
{
Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
// Your UI update code goes here!
if (backgroundColorFill.Visibility == Visibility.Collapsed)
{
backgroundWhiteFill.Visibility = Visibility.Collapsed;
backgroundColorFill.Visibility = Visibility.Visible;
}
else
{
backgroundColorFill.Visibility = Visibility.Collapsed;
backgroundWhiteFill.Visibility = Visibility.Visible;
}
//flightImage.Visibility = Visibility.Collapsed;
//iconImage.Visibility = Visibility.Visible;
}
);
}
既然你正在同步到 UI 线程,你是否考虑过 DispatcherTimer
?您将 Interval
设置为 1 秒,将 Tick
事件设置为您的回调。
我正在尝试让背景无限闪烁一种颜色。我有一些东西大部分都在工作,但我注意到颜色闪烁之间的时间间隔非常不一致 - 有时很快,有时则很慢。
如果我不使用 PeriodicTimer 函数调用,背景会非常一致地闪烁大约 1 秒。但是,计时器在大约 1.5 - 2 分钟后到期,这不是我想要的。我想知道是否有更好的方法来实现这个,而不是使用两个计时器。目前,我需要第二个计时器来延迟切换颜色之间的时间。
ThreadPoolTimer.CreatePeriodicTimer(elapsedHandle, TimeSpan.FromSeconds(1));
耗时处理程序:
private void elapsedHandle(ThreadPoolTimer timer)
{
Timer flashTimer = new Timer(Callback, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1));
}
回调函数:
private void Callback(object state)
{
Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
// Your UI update code goes here!
if (backgroundColorFill.Visibility == Visibility.Collapsed)
{
backgroundWhiteFill.Visibility = Visibility.Collapsed;
backgroundColorFill.Visibility = Visibility.Visible;
}
else
{
backgroundColorFill.Visibility = Visibility.Collapsed;
backgroundWhiteFill.Visibility = Visibility.Visible;
}
//flightImage.Visibility = Visibility.Collapsed;
//iconImage.Visibility = Visibility.Visible;
}
);
}
既然你正在同步到 UI 线程,你是否考虑过 DispatcherTimer
?您将 Interval
设置为 1 秒,将 Tick
事件设置为您的回调。