我的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秒后更新。
答案 0 :(得分:2)
您在睡觉时阻止了UI线程。您不能这样做 - 在您睡觉时,UI线程上无法处理任何内容。如果您想定期(在UI线程上)采取行动,请使用DispatcherTimer
。
答案 1 :(得分:2)
您正在UI线程中运行循环。当您调用Thread.Sleep()时,UI线程会休眠,因此在UI线程阻塞循环结束之前无法更新文本框。