爲什麼進度條更新在理論上阻塞了UI線程?阻塞的UI線程中的ProgressBar更新
在簡單的應用程序中,我有一個ProgressBar和一個標籤。我在UI線程中運行一個耗時的方法,它嘗試更新ProgressBar和標籤。這是而不是應該工作,因爲被阻塞的UI線程。但ProgressBar正在更新!
直到我在窗體上做了任何事情並且它凍結,ProgressBar更新(標籤沒有)。
這是爲什麼?
實施例的代碼(放按鈕,進度和一個標籤上的形式):
private void button1_Click(object sender, EventArgs e)
{
while (true)
{
progressBar1.Value += 1;
label1.Text += "1";
Thread.Sleep(100);
}
}
進度正在更新,標籤不是。我的問題不是如何使標籤更新,但爲什麼ProgressBar 是更新。我知道線程,DoEvents,異步/等待,這不是答案。
爲什麼它不應該工作?你能否展示一些代碼? – 2011-05-23 10:19:49