首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# WPF更新UI应用程序冻结

C# WPF更新UI应用程序冻结
EN

Stack Overflow用户
提问于 2017-04-24 19:25:19
回答 1查看 1.1K关注 0票数 0

在C#中,我们知道有多个后台线程...所以我们可以创建多个UI线程吗?

并且多个UI线程可以帮助更新观察集合中的数据,而不需要freeez?

如果不是从webservice获取数据并更新到观察集合的最佳方法是什么?

代码:-

代码语言:javascript
复制
Thread lthrThread = new Thread((ThreadStart)delegate
{
       string Data = DataFromServer()
       this.Dispatcher.BeginInvoke(new Action(() =>
                    {
                        UI freeze here for 5 -10 seconds
                    }));        
});
lthrThread.SetApartmentState(ApartmentState.STA);
lthrThread.Start();
EN

回答 1

Stack Overflow用户

发布于 2017-04-24 19:35:23

UI线程是主thread.You不能复制it.If你在UI线程上调用你的数据,你的应用程序用户界面不会响应,直到它ends.So,你需要创建后台线程或任务来处理来自webservices.When的数据调用你从webservice获取数据并将其传递到主线程( UI )。您可以使用Dispatcher

代码语言:javascript
复制
Application.Current.Dispatcher?.BeginInvoke(new Action(() => {
 // Pass data to UI here.
}));

或者你可以使用async Task,它会更方便。

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

https://stackoverflow.com/questions/43586816

复制
相关文章

相似问题

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