对于以下问题,我非常感谢您的帮助-您可以在我的
live poker blinds timer
:
主时钟(盲计时器倒计时)从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;
我认为这与以下事实有关:勾选不一定精确到一秒钟,并且用户界面不知何故滞后并跳过一秒钟,但是两个计时器同时在勾选事件中更新(TimerunningForCurrentBlindFormatted(这是最长的已用时间)和TimeLeftInCurrentBlindFormatted)。
在我的dev系统上,计时器从20:00到19:59,然后到19:57。