0

在我的 silverlight 4.0 应用程序中,有一次,在用户按下按钮后,我必须创建一些需要一些时间(5-10 秒)的 UI 对象。在此期间,用户界面当然会冻结。我决定将这些对象的创建放在后台工作人员中,这样 UI 至少可以显示进度条。

但是这个解决方案不起作用。要创建 UI 对象,您必须在 UI 线程中。如果我将这些对象的创建放在里面,那么Dispatcher.BeginInvoke()我的 UI 就会冻结。在大多数情况下甚至没有显示进度条。有没有解决的办法?

我可以在 silverlight 在后台创建 UI 对象时显示进度条吗?

4

2 回答 2

0

您可以在内部创建 UI 对象之前尝试显示自定义消息BeginInvoke()

例子:

private void CreateObjects()
{
    myMsg.Text = "Loading...";
    Dispatcher.BeginInvoke(() => { AddObjects() });
}

创建所有对象后,禁用该消息。

您也可以使用进度条尝试类似的事情。

于 2012-07-24T06:50:00.790 回答
0

看看这个论坛帖子。它可能会有所帮助。

而不是使用:

System.Windows.Threading.Dispatcher.BeginInvoke(() => {});

他们使用:

System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() => {});
于 2012-07-23T20:03:29.707 回答