Windows应用商店应用程序的线程模型

时间:2012-10-18 09:50:50

标签: c# multithreading xaml windows-8 windows-store-apps

我正在创建Windows应用商店应用程序,它从Web服务异步检索数据,然后使用数据更新UI。在代码中访问Application.Current.Resources时遇到了几个问题(RPC_E_WRONG_THREAD)。

我可以在哪里找到关于应用程序如何启动,在应用程序生命周期中生成哪些线程以及我可以做什么和访问哪些内容以及哪些内容无法解释的解释?

1 个答案:

答案 0 :(得分:3)

Windows应用商店应用程序遵循WPF线程模型,其中有一个名为Dispatcher的UI线程。所有UI更新/修改/等必须在调度程序线程上进行。您得到的错误是您正在尝试在后台线程上更新UI。

.Net 4.5使用新的异步/等待机制来管理异步调用。所以:

public async List<Foo> GetMyFooData()
{
    return await _myWebService.GetFooData();
}

底层发生的事情是编译器正在生成异步方法,因此您不会阻止UI线程。

我怀疑您正在尝试访问期望由Dispatcher检索的Access项目,这就是您出错的原因。