这是UWP C#应用程序。我想显示 i 变量。
private void btn2_Click(object sender, RoutedEventArgs e)
{
for(int i = 0; i<=10000000; i++)
{
textBlock2.Text = i.ToString();
}
}
但是,当我单击按钮后,循环完成后,文本仅更改了一次。
如何在每个循环中看到更改的文字?
答案 0 :(得分:3)
实际上,在执行长循环时,您的UI被冻结,因此屏幕上无法更新任何内容。试试这个
private async void btn2_Click(object sender, RoutedEventArgs e)
{
for(int i = 0; i<=10000000; i++)
{
textBlock2.Text = i.ToString();
await Task.Delay(200); //stay 200 ms before showing next number so human eyes can see it.
}
}
当它执行到此行await Task.Delay(200);
时,该循环将暂时挂起-200毫秒,并且UI线程现在有机会处理队列中待处理的绘制任务,包括重新绘制文本块。