我目前正在为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();
}
答案 0 :(得分:0)
使用DispatcherTimer
,将Interval
设置为1秒,并在其Tick
事件中更新TextBlock
。
答案 1 :(得分:0)
问题是GUI环境通常不会按照您的假设工作(在循环执行时不断更新UI并监听用户交互)。你应该看看this MSDN page - 它是关于WPF而不是Windows XAML,但基础是相同的。
在较高级别,您的应用会运行一个连续的循环来执行 这样的事情:
因此,如果您在步骤2中运行无休止的while
循环,则UI永远不会更新,并且应用永远不会收到停止按钮的Click
事件。您必须执行类似DispatcherTimer
(由@Igor Kulman建议)的操作,定期检查秒表的值并更新UI。
我建议每秒不止一次;使用TimeSpan.FromMilliseconds(33)
每秒会给你30帧。