我正在创建一个专门使用此计时器的健身应用程序:准备自己的倒计时(5秒),然后倒计时锻炼(20秒),以及休息倒计时(10秒)。锻炼和休息倒计时意味着在完成之前循环8。这就是我现在所拥有的。我不知道在哪里放置循环或它需要的条件。有什么帮助吗?
while (rounds > 0 && rounds < 9)
{
if (prepTicks > 0)
{
txtblPrepare.Visibility = System.Windows.Visibility.Visible;
txtblGo.Visibility = System.Windows.Visibility.Collapsed;
txtblTime.Text = prepTicks + " Seconds Remaining";
prepTicks--;
}
else if (workTick > 0)
{
txtblPrepare.Visibility = System.Windows.Visibility.Collapsed;
txtblGo.Visibility = System.Windows.Visibility.Visible;
txtblTime.Text = workTick + " Seconds Remaining";
workTick--;
}
else if (restTicks > 0)
{
txtblGo.Visibility = System.Windows.Visibility.Collapsed;
txtblRest.Visibility = System.Windows.Visibility.Visible;
txtblTime.Text = restTicks + " Seconds Remaining";
restTicks--;
}
else
{
txtblRest.Text = "Congratulations";
txtblTime.Text = "Times Up";
}
rounds++;
}
txtblRoundNo.Text = rounds.ToString();
答案 0 :(得分:1)
根据您的要求,DispatcherTimer
完成工作。
// DispatcherTimer setup
dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0,0,1);
dispatcherTimer.Start();
在dispatcherTimer_Tick
事件处理程序中,您可以更改UI元素的值。 DispatcherTimer在与UI相同的线程上运行。因此,使用DispatcherTimer而不是传统的Timer对象允许UI更新,而无需Invoke或BeginInvoke方法。这真的很简单。 DispatcherTimer为我们提供了一个类似Timer的对象,它具有传统的Timer's Tick事件,但可以直接更新UI。
这不会阻止用户界面,让您的应用更流畅。