我有一个页面,它运行大量代码来为用户准备页面和页面布局。
它只需要在蓝色的月亮中使用一次。但是当它发生时,用户大约需要等待三秒钟。
显然,微软只允许等待2秒或更短的时间。 Daaaaang。
我已经对代码进行了优化和优化,并且没有办法解决它:代码尽可能快。很自然地,我开始制作装载机。
我尝试更新了几个控件,但是由于UI线程被冻结,它们无法正常工作。
我搜索,搜索和搜索,发现this,这令人困惑,并没有真正的帮助,部分是因为WP7的C#版本,部分是因为我是C#的初学者。
如何在UI线程被冻结时使加载器正常工作?
答案 0 :(得分:2)
Silverlight Toolkit For Windows Phone引入了PerformanceProgressBar
,它将合成器线程专门用于动画,而不是UI(用户界面)线程“described in this WindowsPhone Geek article。这应该可以帮助您使用冻结用户界面。
在并行执行时(由Merlyn建议),我建议使用QueueUserWorkItem方法在BackgroundWorker
上的单独线程中执行代码,让UI线程处于活动状态以进行UI更新,但是如本文所述,您需要使用Dispatcher.BeginInvoke
从那里更新您的用户界面。
答案 1 :(得分:1)
您可以尝试使用the BackgroundWorker
class。该页面有一个如何使用它的教程。
请参阅此问题以及我对其他教程的回答。虽然不是特定于Windows Phone 7,但它仍然与在等待任务完成时更新UI有关:
以下是使用BackgroundWorker
: