从wp8 app中的单独线程更新UI

Nip*_*pun 2 c# user-interface multithreading windows-phone-8

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

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

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

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

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

有人可以帮帮我吗?

Kev*_*sse 5

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

Deployment.Current.Dispatcher.BeginInvoke(() =>
{
    //Update the UI controls here
});
Run Code Online (Sandbox Code Playgroud)

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