2011-10-18 4 views
0

WPFにforループがあります。ループが終了するまで、テキストボックスは更新されません。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

関連する問題