我有一个cordova应用程序,它有一个使用OpenGL / DirectX的插件,需要接管应用程序窗口。我一切都很好,直到我去实际设置应用程序窗口的内容。当我去实例化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 :(得分:0)
当我去实例化XAML页面时,我收到一个关于没有在正确的线程上的错误。
Cordova异步执行插件。请参阅this case。因此,OpenGL / DirectX插件使用的本机代码无法访问您的UI线程。
目前没有其他方法可以加载XAML定位Windows平台。