如何在每个循环中更改TextBlock.Text?

时间:2018-11-08 05:15:51

标签: c# uwp

这是UWP C#应用程序。我想显示 i 变量。

    private void btn2_Click(object sender, RoutedEventArgs e)
    {
        for(int i = 0; i<=10000000; i++)
        {
            textBlock2.Text = i.ToString();
        }
    }

但是,当我单击按钮后,循环完成后,文本仅更改了一次。
如何在每个循环中看到更改的文字?

1 个答案:

答案 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线程现在有机会处理队列中待处理的绘制任务,包括重新绘制文本块。