首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Ui线程外创建UIElements,Silverlight

在Ui线程外创建UIElements,Silverlight
EN

Stack Overflow用户
提问于 2012-07-23 21:46:23
回答 2查看 530关注 0票数 0

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

但这种解决方案不起作用。要创建UI对象,您必须处于UI线程中。如果我将这些对象的创建放在Dispatcher.BeginInvoke()中,那么我的UI将再次冻结。在大多数情况下,甚至没有显示进度条。有什么办法可以解决这个问题吗?

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

EN

回答 2

Stack Overflow用户

发布于 2012-07-24 04:03:30

看看这个论坛的post。这可能会有所帮助。

而不是使用:

代码语言:javascript
复制
System.Windows.Threading.Dispatcher.BeginInvoke(() => {});

它们使用:

代码语言:javascript
复制
System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() => {});
票数 0
EN

Stack Overflow用户

发布于 2012-07-24 14:50:01

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

示例:

代码语言:javascript
复制
private void CreateObjects()
{
    myMsg.Text = "Loading...";
    Dispatcher.BeginInvoke(() => { AddObjects() });
}

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

你也可以尝试用进度条做类似的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11613820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档