如何创建一个实时秒表Windows Phone 8.1通用应用程序

时间:2015-04-12 16:36:09

标签: windows-phone-8.1 win-universal-app

我目前正在为Windows Phone 8.1创建一个秒表应用程序,我正在使用秒表类,但我似乎无法找到一种方法来连续更新屏幕上的计时器。当秒表运行时,我尝试使用while循环来更新文本块,但是在方法结束并导致无限循环之前不会更新。

    private void Button_Click(object sender, RoutedEventArgs e)
    {

        if (!stopwatch.IsRunning)
            _sw.Start();

        while (stopwatch.IsRunning)
            this.sw.Text = stopwatch.Elapsed.ToString();
    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        stopwatch.Stop();
    } 

2 个答案:

答案 0 :(得分:0)

使用DispatcherTimer,将Interval设置为1秒,并在其Tick事件中更新TextBlock

答案 1 :(得分:0)

问题是GUI环境通常不会按照您的假设工作(在循环执行时不断更新UI并监听用户交互)。你应该看看this MSDN page - 它是关于WPF而不是Windows XAML,但基础是相同的。

在较高级别,您的应用会运行一个连续的循环来执行 这样的事情:

  1. 检查用户输入
  2. 运行事件处理程序
  3. 更新布局
  4. 渲染新用户界面
  5. 回到#1
  6. 因此,如果您在步骤2中运行无休止的while循环,则UI永远不会更新,并且应用永远不会收到停止按钮的Click事件。您必须执行类似DispatcherTimer(由@Igor Kulman建议)的操作,定期检查秒表的值并更新UI。

    我建议每秒不止一次;使用TimeSpan.FromMilliseconds(33)每秒会给你30帧。