我正在创建 Windows Store 应用程序,它从 Web 服务异步检索数据,然后使用数据更新 UI。在代码(RPC_E_WRONG_THREAD)中访问 Application.Current.Resources 时遇到了几个问题。
我可以在哪里找到有关应用程序如何启动、在应用程序生命周期内产生哪些线程以及我可以做什么和访问什么以及不能做什么的解释?
我正在创建 Windows Store 应用程序,它从 Web 服务异步检索数据,然后使用数据更新 UI。在代码(RPC_E_WRONG_THREAD)中访问 Application.Current.Resources 时遇到了几个问题。
我可以在哪里找到有关应用程序如何启动、在应用程序生命周期内产生哪些线程以及我可以做什么和访问什么以及不能做什么的解释?
Windows 应用商店应用程序遵循 WPF 线程模型,其中有一个称为 Dispatcher 的 UI 线程。所有 UI 更新/修改/等都必须发生在调度程序线程上。您得到的错误是您试图在后台线程上更新 UI。
.Net 4.5 使用新的 async/await 机制来管理异步调用。所以:
public async List<Foo> GetMyFooData()
{
return await _myWebService.GetFooData();
}
幕后发生的事情是编译器正在生成一个异步方法,这样您就不会阻塞 UI 线程。
我怀疑您正在尝试访问期望由 Dispatcher 检索的 Access 项目,这就是您出错的原因。