未在循环中更新文本框

本文关键字:文本 更新 循环 | 更新日期: 2023-09-27 18:11:28

我的WPF中有一个for循环。直到循环结束,文本框才会更新。

我的代码:

for (int i = 0; i < 10; i++)
{
    Thread.Sleep(1500);
    // MessageBox.Show(i.ToString());
    updateTextBox(i);
}

更新功能:

private void updateTextBox(int i)
{
    // MessageBox.Show("reached here:" + i.ToString());
    txtExecLog.AppendText("'n" + i.ToString());
 }

如果我取消注释消息框文本,它会一个接一个地更新,否则它会在15秒(1.5*10)后用所有值更新文本框。

未在循环中更新文本框

您在睡眠时阻塞了UI线程。你不能那样做——当你睡觉的时候,UI线程上什么都不能处理。如果要定期(在UI线程上(执行操作,请使用DispatcherTimer

您正在UI线程中运行循环。当您调用Thread.Sleep((时,UI线程会休眠,因此在UI线程阻塞循环结束之前无法更新文本框。