在Ui线程Silverlight之外创建UIElements



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

但这种解决方案并不奏效。要创建UI对象,您必须在UI线程中。如果我把这些对象的创建放在Dispatcher.BeginInvoke()中,我的UI就会冻结。在大多数情况下,甚至没有显示进度条。有办法绕过这个吗?

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

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

代替使用:

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

他们使用:

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

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

示例:

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

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

你也可以在进度条上尝试类似的方法。

相关内容

  • 没有找到相关文章

最新更新