0

WinRT プロジェクト、C++/CX。PNG ファイルを WriteableBitmap に読み込もうとしています。Sourceプロパティを に設定していますIRandomAccessStream。ファイルからストリームを取得するには、非同期操作を使用する必要があります。WinRT で開いている同期ファイルはありません。

私の非同期完了ハンドラーは、ランダムなワーカー スレッドで実行されているようです。そして、そのハンドラーでは、最も無害な操作 (新しい WriteableBitmap の構築など) が WrongThreadException を引き起こします。実行ごとに再現することはできません。

どうしたの?プレリリースのファンキーさまでチョークする必要がありますか?

Visual Studio 2012 RC、Windows 8 ビルド 8400。

4

1 に答える 1

1

UI 要素を操作するときは、UI スレッドで実行する必要があります。UI スレッド上にいることを確認する最も簡単な方法は、PPL の継続を使用することです。ストリーム作成非同期 API を使用する場合、「.then」メソッドに渡されるラムダは、元のスレッドのスレッド コンテキストで実行する必要があります。 - 通常は UI スレッド。

PPL 経由で UI スレッドに戻れない場合は、CoreDispatcher.RunAsync() を使用し、RunAsync に渡されたラムダで作業を行います。これは常に UI スレッドで実行されます。

于 2012-06-23T05:26:36.633 に答える