c# - 从 wp8 应用程序中的单独线程更新 UI

标签 c# multithreading user-interface windows-phone-8

我正在创建一个小型 WP8 应用程序,该应用程序更新从 Windows Azure 移动服务接收数据并将其显示给用户。

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

我尝试了以下方法但失败了......

  1. 创建了一个单独的线程,但该线程无法更新 UI,因为它无法访问控件

  2. 创建了一个 BackgroundWorker 线程,但是当我调用 Azure 移动服务等待方法时,工作线程调用其完成事件,然后当我调用 ProgressChanged 事件时它失败并出现异常:操作已完成

有人可以帮我吗?

最佳答案

您可以使用调度程序的 BeginInvoke 方法从单独的线程更新 UI:

Deployment.Current.Dispatcher.BeginInvoke(() =>
{
    //Update the UI controls here
});

准确地说,它实际上不会从单独的线程更新 UI,但它会将操作排队,以便主线程可以在可用时执行它。

关于c# - 从 wp8 应用程序中的单独线程更新 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17599057/

相关文章:

c# - 典型的基于浏览器的 Web 解决方案可以利用缓存吗?

c# - 如何正确封装多线程.NET C#

java - 通过for循环添加JCheckBox

java - 如何使用监听器访问其他元素?

c++ - 控件到达 Void 的 Non Void 函数的结尾

cocoa - JavaScript 开发人员从 cocoa 等框架中寻找灵感

c# - ASP.NET Core 2.1 cookie 身份验证似乎具有服务器亲和性

c# - 如何将 sql(导出)表批量复制到 .Net 中的 csv 或 tsv 文件?

c# - C#打开一个新的WinForm并关闭创建它的Form

c++ - 线程安全 : Multiple threads reading from a single const source