2016-10-20 32 views
0

我有一個cordova應用程序,它有一個使用需要接管應用程序窗口的OpenGL/DirectX的插件。我一切都很好,直到我實際設置應用程序窗口的內容。當我去實例化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線程。

目前沒有其他方法來加載XAML定位Windows平臺。

+0

王牌不能在Windows上工作:( – Kyle

+0

@凱爾你是對的,忘記了,很抱歉,我已經更新了答案,目前沒有其他方法來加載XAML定位窗口。 –

相關問題