gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:48:31 25 4
gpt4 key购买 nike

我将不胜感激以下问题的帮助 - 您可以在我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com