文本框未在for循环中更新

时间:2011-10-18 07:23:37

标签: c# wpf wpf-controls

我的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());
 }

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

2 个答案:

答案 0 :(得分:2)

您在睡觉时阻止了UI线程。您不能这样做 - 在您睡觉时,UI线程上无法处理任何内容。如果您想定期(在UI线程上)采取行动,请使用DispatcherTimer

答案 1 :(得分:2)

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