2011-10-18 42 views
0

我有一个for循环在我的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)文本框更新所有的值。

回答

2

你在睡觉时会阻塞UI线程。你不能这样做 - 在你睡觉的时候在UI线程上不能处理任何东西。如果您想要定期采取行动(在UI线程上),请使用DispatcherTimer

+0

谢谢..这工作 – Rohan

2

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

+0

谢谢..作品像一个魅力 – Rohan