C#Windows Phone 8.1周期性定时器的定时器问题不一致

时间:2015-02-13 06:39:22

标签: c# flash timer windows-phone-8.1

我试图让背景无限期地闪烁颜色。我有一些主要工作的东西,但我注意到闪烁之间的时间间隔非常不一致 - 有时非常快,有时则进展缓慢。

如果我不使用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;
            }
            );

    }

1 个答案:

答案 0 :(得分:1)

既然您正在同步UI线程,您是否考虑过DispatcherTimer?您将Interval设置为1秒,将Tick事件设置为您的回调。