对于以下问题,我希望得到一些帮助 - 您可以在我的网站上看到这个问题现场扑克百叶窗计时器 http://www.pokerdiy.com/poker-blinds-timer.aspx:
主时钟(盲定时器倒计时)从 20:00 开始,然后跳转到 19:58。关卡计时器(在屏幕顶部计数) - 同步启动,因此会延迟一秒。
这是我的代码:XAML:
TextBlock Text="{Binding TimeLeftInCurrentBlindFormatted}"
和我的锦标赛课程:
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 毫秒一次。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)