2016-10-20 30 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定位窗口。 –

相关问题