在我的silverlight 4.0应用程序中,在用户按下按钮后,我必须创建一些耗时(5-10秒)的UI对象。当然,在这段时间内UI会冻结。我决定将这些对象的创建放在后台工作程序中,这样UI至少可以显示进度条。
但这种解决方案不起作用。要创建UI对象,您必须处于UI线程中。如果我将这些对象的创建放在Dispatcher.BeginInvoke()中,那么我的UI将再次冻结。在大多数情况下,甚至没有显示进度条。有什么办法可以解决这个问题吗?
当silverlight在后台创建UI对象时,我可以显示进度条吗?
发布于 2012-07-24 04:03:30
看看这个论坛的post。这可能会有所帮助。
而不是使用:
System.Windows.Threading.Dispatcher.BeginInvoke(() => {});它们使用:
System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() => {});发布于 2012-07-24 14:50:01
在BeginInvoke()中创建UI对象之前,您可以尝试显示自定义消息。
示例:
private void CreateObjects()
{
myMsg.Text = "Loading...";
Dispatcher.BeginInvoke(() => { AddObjects() });
}创建所有对象后,禁用该消息。
你也可以尝试用进度条做类似的事情。
https://stackoverflow.com/questions/11613820
复制相似问题