我正试图实现此处显示的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