我正在做一些線程實驗,並且做了一個'控制'方法來比較所有處理在UI線程中發生的位置。它應該運行一個方法,在最後更新一個標籤。此方法運行四次,但標籤在所有4個完成之前不會更新。我希望一個標籤每2秒更新一次。這裏的代碼:爲什麼不立即贏取表單應用程序更新標籤?
private void button1_Click(object sender, EventArgs e)
{
Stopwatch watch = new Stopwatch();
watch.Start();
UIThreadMethod(lblOne);
UIThreadMethod(lblTwo);
UIThreadMethod(lblThree);
UIThreadMethod(lblFour);
watch.Stop();
lblTotal.Text = "Total Time (ms): " + watch.ElapsedMilliseconds.ToString();
}
private void UIThreadMethod(Label label)
{
Stopwatch watch = new Stopwatch();
watch.Start();
for (int i = 0; i < 10; i++)
{
Thread.Sleep(200);
}
watch.Stop();
// this doesn't set text right away
label.Text = "Done, Time taken (ms): " + watch.ElapsedMilliseconds;
}
也許我只是缺少一些基本的東西,但我卡住了。有任何想法嗎?謝謝。
嘗試[Application.DoEvents()](HTTP:// MSDN .microsoft.com/en-us/library/system.windows.forms.application.doevents.aspx)? – Patrick 2010-05-22 19:46:56