2016-10-20 12 views
0

私は、アプリケーションウィンドウを引き継ぐ必要があるOpenGL/DirectXを使用するプラグインを持つcordovaアプリケーションを持っています。実際にアプリケーションウィンドウの内容を設定するまで、私はすべてうまく動作しています。私は、XAMLページをインスタンス化するために行くとき、私は正しいスレッドでされていないというエラーが出ます:WinJSアプリケーションで、プログラムによってウィンドウビューをXAMLページに置き換えることはできますか?

RPC_E_WRONG_THREADは、アプリケーションが別のスレッドにマーシャリングされたインターフェイスと呼ばれます。

私はこのことは不可能だと言ってきましたが、ウィンドウがサンドボックスなどのものでなければ、可能でなければならないように感じられます。また、問題は、XAMLバックエンドサービス/フレームワーク/ WinJSアプリケーションでセットアップされていないものであると考えていますか?どのような場合に手動で設定する方法がありますか?

何か助けていただければ幸いです。少なくとも、それができない理由については、少なくとも説明していただきたいと思います。私はWindowsプログラミングにはまだまだ慣れています。何かができない理由を知ってうれしいです。

ありがとうございます!

P.S.私はまた、ディスパッチャの内側にXAMLクラスを作成するコードを実行しようとした

:ここ

Windows::ApplicationModel::Core::CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync 

は私のコードです:

void MyComponent::doStuff(){ 
    if (m_directXPage == nullptr) 
    { 
     try 
     { 
      m_directXPage = ref new DirectXPage(); 
     } 
     catch (const std::exception& e) 
     { 
      e.what(); 
     } 

    } 

    // Place the page in the current window and ensure that it is active. 
    Window::Current->Content = m_directXPage; 
    Window::Current->Activate(); 
} 

答えて

0

私はインスタンス化する行くときXAMLページ正しいスレッドにないというエラーが表示されます。

Cordovaはプラグインを非同期に実行します。 this caseをご覧ください。したがって、OpenGL/DirectXプラグインで消費されるネイティブコードは、UIスレッドにアクセスできません。

現在、WindowsプラットフォームをターゲットとするXAMLを読み込む方法はありません。

+0

aceはWindowsでは動作しません:( – Kyle

+0

@Kyleあなたは正しいです、忘れました、申し訳ありません。私は答えを更新しました。現在、XAMLターゲティングウィンドウを読み込む他の方法はありません。 –

関連する問題