0

Webサービスから非同期でデータを取得し、そのデータでUIを更新するWindowsストアアプリケーションを作成しています。コード(RPC_E_WRONG_THREAD)でApplication.Current.Resourcesにアクセスするときに、いくつかの問題が発生しました。

アプリがどのように起動されるか、アプリの存続期間中にどのスレッドが生成されるか、何ができてアクセスできるか、何ができないかについての説明はどこにありますか?

4

1 に答える 1

3

Windows ストア アプリケーションは、ディスパッチャーと呼ばれる単一の UI スレッドがある WPF スレッド モデルに従います。すべての UI の更新/変更などは、ディスパッチャー スレッドで行う必要があります。表示されるエラーは、バックグラウンド スレッドで UI を更新しようとしているということです。

.Net 4.5 は、非同期呼び出しを管理するために新しい async/await メカニズムを使用します。そう:

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

内部で起こっていることは、UI スレッドをブロックしないように、コンパイラによって非同期メソッドが生成されていることです。

Dispatcher によって取得されることを期待している Access アイテムにアクセスしようとしていると思われます。これがエラーの原因です。

于 2012-10-18T11:18:15.273 に答える