如何在IF语句中循环?

时间:2014-12-27 14:25:55

标签: c# loops windows-phone-8

我正在创建一个专门使用此计时器的健身应用程序:准备自己的倒计时(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();

1 个答案:

答案 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。

这不会阻止用户界面,让您的应用更流畅。