我正試圖實現此處顯示的MSDN異步模式示例:http://msdn.microsoft.com/en-us/library/8wy069k1%28v=VS.90%29.aspx。在該示例中,ProgressChanged事件的觸發頻率等於UI在處理事件時掛起。請注意,我改變了:使用C#異步模式更新UI時出現問題
int testNumber = rand.Next(200000);
到
int testNumber = 20000000;
在startAsyncButton_Click更好地測試了這種情況。
進度欄確實按預期進行更新,但所有其他UI事件都已掛起。如果我在BuildPrimeNumberList方法改變
// Yield the rest of this time slice.
Thread.Sleep(0);
到
// Yield the rest of this time slice.
Thread.Sleep(1);
,該UI開始響應位這違背使用線程的性能的目的。
任何人都可以推薦一種方法,有效地讓用戶界面在這個例子中保持響應嗎?
謝謝
多線程的這種用法是不是真正的性能,它是關於無鎖定UI進行長時間運行的操作。在性能可能非常關鍵(非常罕見)的現實世界中,您可以更簡單地更新UI。 – AndrewS 2011-04-02 03:40:06