首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从wp8应用程序中的一个单独线程更新UI

从wp8应用程序中的一个单独线程更新UI
EN

Stack Overflow用户
提问于 2013-07-11 16:46:04
回答 2查看 1.4K关注 0票数 2

我正在创建一个小型WP8应用程序,它更新从接收数据并显示给用户。

现在,我有了一个单独的线程,它的工作是与azure服务交互,获取数据并使用数据更新UI,而主UI线程正在做其他事情。

我试过以下方法但失败了..。

  1. 创建了一个单独的线程,但此线程无法更新UI,因为它无法访问控件。
  2. 创建了一个BackgroundWorker线程,但是当我调用Azure移动服务等待方法时,工作线程调用它已完成的事件,然后当我调用ProgressChanged事件时,它会异常失败:操作已经完成

有人能帮帮我吗?

EN

回答 2

Stack Overflow用户

发布于 2013-07-11 17:06:10

您可以通过使用dispatcher的BeginInvoke方法从一个单独的线程更新UI:

代码语言:javascript
复制
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
    //Update the UI controls here
});

确切地说,它不会从单独的线程中实际更新UI,但是它会对操作进行排队,这样主线程就可以在可用时执行它。

票数 5
EN

Stack Overflow用户

发布于 2013-07-13 00:05:29

由于您正在使用Azure移动服务提供的async方法,所以您可以自己使用async方法。不需要工作线程或后台线程。

代码语言:javascript
复制
private async Task UpdateUI()
{
  var result = await MyAzureMobileServiceCall();
  MyUIElement.DataContext = result;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17599057

复制
相关文章

相似问题

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