silverlight - 计时器不定期更新,每秒更新 "skips"(Silverlight 4 DispatcherTimer)

标签 silverlight silverlight-4.0 timer

我希望得到有关以下问题的帮助 - 您可以在我的 live poker blinds timer 上看到此问题:

主时钟(盲定时器倒计时)从 20:00 开始,然后跳转到 19:58。关卡计时器(在屏幕顶部计数)- 同步启动,因此会超时。

这是我的代码:XAML:

TextBlock Text="{Binding TimeLeftInCurrentBlindFormatted}"

和我的锦标赛类(class):

    private DispatcherTimer timerBlind;
    private DateTime? blindTimeStarted = null;

    public DateTime? BlindTimeStarted
    {
            get
            {
                return blindTimeStarted;
            }
            set
            {
                if (blindTimeStarted != value)
                {
                    blindTimeStarted = value;
                    OnPropertyChanged("BlindTimeStarted");
                    OnPropertyChanged("TimeLeftInCurrentBlind");
                    OnPropertyChanged("TimeLeftInCurrentBlindFormatted");
                    OnPropertyChanged("TimeRunningForCurrentBlind");
                    OnPropertyChanged("TimeRunningForCurrentBlindFormatted");
                }
            }
        }


            public TimeSpan TimeLeftInCurrentBlind
            {
                get
                {
                     return BlindTimeStarted == null ? blindset.CurrentBlind.BlindDuration : BlindTimeStarted.Value.Add(blindset.CurrentBlind.BlindDuration).Subtract(DateTime.UtcNow.Subtract(TotalTimePausedForCurrentBlind)); 
                }
            }
            public string TimeLeftInCurrentBlindFormatted
            {
                get { return Utils.FormatTime(TimeLeftInCurrentBlind); }
            }



            void Timer_Tick(object sender, EventArgs e)
            {
                if (IsTimerBlindRunning)
                {
                    OnPropertyChanged("TimeRunningForCurrentBlindFormatted");
                    OnPropertyChanged("TimeLeftInCurrentBlindFormatted");
                }
            }
        }

当通过 UI 启动计时器时,将设置日期时间:

TimeStarted = DateTime.UtcNow;

我认为这与以下事实有关:Tick 不一定正好是一秒,并且 UI 不知何故滞后并跳过一秒,但两个计时器在 Tick 事件中同时更新(TimeRunningForCurrentBlindFormatted(其中是顶部已用时间)和 TimeLeftInCurrentBlindFormatted)。

在我的开发系统上,计时器从 20:00 到 19:59,然后到 19:57。

最佳答案

不要每秒触发 DispatcherTimer。更频繁地触发它......也许每 100 毫秒一次。

关于silverlight - 计时器不定期更新,每秒更新 "skips"(Silverlight 4 DispatcherTimer),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3447562/

相关文章:

silverlight - 以编程方式确定文本框的最大适合度 (WP7)

data-binding - 如何在 row_loading 事件之后隐藏 silverlight datagrid 行?

silverlight - 在 Silverlight 4 中(在客户端)编码音频(为 AAC)?

silverlight - 为 Silverlight 4 重新编译 Silverlight 3 控件有什么理由吗?

java - java中定时器ActionListener的操作

silverlight - Silverlight 是否有足够的安装基础来考虑使用它部署公共(public) Web 应用程序?

.net - 使用触发器更改 SolidcolorBrush 资源的颜色?

c# - 如何通过 WebClient 请求传递信息以识别加载的对象?

javascript - setInterval 在 mac 上不好吗?

javascript - 单个 HTML 页面上的多个计时器