私のアプリケーションは、Windows Phone 8 Direct3D Xamlサンプルから派生しています。このサンプルでは、C#プログラムがDirect3Dデバイスを含むWinPRTコンポーネントをインスタンス化します。C#コードはUIスレッドで実行され、コンポーネントコードは別のアプリケーションスレッドで実行されます。WinPRTコンポーネントは、スレッドごとに宣言された変数、静的__declspec(thread)を含むC++プリコンパイル済みライブラリで動作します。
変数はアプリケーションスレッドで必要なときに初期化されますが、シャットダウン(ライフサイクルClosingイベントによって引き起こされる)はUIスレッドで呼び出されます。シャットダウンプロセスは、初期化されていないスレッドごとの変数の間違ったセットを使用し、クラッシュを引き起こします。
シャットダウン中にアプリケーションスレッドで呼び出されるWinPRTコンポーネントのメソッドが見つかりません。私は自分のものを引っ掛けるためのものを見つけることを望んでいましたが、何もないようです。
では、UIスレッドからアプリケーションスレッドで実行されるシャットダウンコードを呼び出すにはどうすればよいですか?
WinPRTは、私が利用できるスレッド機能を厳しく制限します。実行可能な解決策を見つけることができませんでした。Dispatcherクラスを見ましたが、WinPRTでは、ワーカースレッドからUIスレッドでコードを実行するためにのみ使用され、その逆はありません。他にどのようなオプションがありますか?