我遇到了一個小問題。我有兩個線程執行循環,每次都需要返回/發送一個數字到GUI的線程。爲此,我使用BackGroundWorker和ReportProgress。簡單的任務沒有凍結gui
讓我們說這樣的事情:
我有一個BackgroundWorker的執行(DoWork的)一個簡單的循環,從0計數到什麼。循環的每個條目都使用ReportProgress事件將計數器發送到GUI的線程,該線程將打印計數器的值。
void worker_DoWork(object sender, DoWorkEventArgs e)
{
int count = 0;
BackgroundWorker Worker = (BackgroundWorker)sender;
while (count < 10000000)
{
Worker.ReportProgress(count);
count++;
}
}
void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
txt.Text = e.ProgressPercentage.ToString();
}
現在,這個opretion凍結了GUI。
我知道ReportProgress在創建BackGroundWorker的線程上調用ProgressChange處理程序,所以我認爲循環執行速度如此之快,因此GUI線程無法按要求打印值。
如何在不凍結GUI的情況下執行類似的任務?
我聽說過Dispatcher,但我不確定它的用途。
你的意思是GUI的權利?因爲GUID是完全不同的東西,據我所知:-)另外,你是否使用WinForms?或者我可以假設WPF? – Daneo
'GUI' =圖形用戶界面; 'GUID' =全局唯一標識符...僅供參考;) –