如何在代码执行时创建一个运行的加载器动画?

时间:2011-12-11 02:38:55

标签: c# windows-phone-7 animation load loading

我有一个页面,它运行大量代码来为用户准备页面和页面布局。

它只需要在蓝色的月亮中使用一次。但是当它发生时,用户大约需要等待三秒钟。

显然,微软只允许等待2秒或更短的时间。 Daaaaang。

我已经对代码进行了优化和优化,并且没有办法解决它:代码尽可能快。很自然地,我开始制作装载机。

我尝试更新了几个控件,但是由于UI线程被冻结,它们无法正常工作。

我搜索,搜索和搜索,发现this,这令人困惑,并没有真正的帮助,部分是因为WP7的C#版本,部分是因为我是C#的初学者。

如何在UI线程被冻结时使加载器正常工作?

2 个答案:

答案 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

的Windows Phone 7特定教程