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 事件设置为您的回调。