2016-10-20 3 views
0

저는 OpenGL/DirectX를 사용하는 플러그인이있는 코드바 응용 프로그램을 가지고있어 응용 프로그램 창을 넘겨 줘야합니다. 실제로 앱 윈도우의 내용을 설정하기 전까지는 모든 것이 잘 작동합니다. XAML 페이지를 인스턴스화하려고하면 올바른 스레드에 있지 않다는 오류가 발생합니다.WinJS 응용 프로그램의 창보기를 프로그래밍 방식으로 XAML 페이지로 바꿀 수 있습니까?

RPC_E_WRONG_THREAD 응용 프로그램이 다른 스레드에 대해 마샬링 된 인터페이스를 호출했습니다.

나는 이것이 가능하지 않다고 말한 적이 있지만, 창이 창이 샌드위치 형이 아닌 한, 가능하지 않으면 안된다고 생각합니다. 또한 문제가 XAML 백엔드 서비스/프레임 워크/WinJS 응용 프로그램에 설치되지 않은 것이 무엇이겠습니까? 어떤 경우 수동으로 설정하는 방법이 있습니까?

나는 모든 도움을 주시고, 적어도 그것이 불가능한 이유에 대한 설명을 주시면 감사하겠습니다. 나는 윈도우 프로그래밍에 익숙하지 않은데 왜 뭔가를 할 수 없는지 아는 것에 감사한다.

감사합니다.

P.

나는 또한 발송자의 내부 XAML 클래스를 생성하는 코드를 실행하기 위해 시도했다 : 나는 인스턴스를 갈 때

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

: 여기

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

내 코드입니다 XAML 페이지 올바른 스레드에 있지 않다는 오류가 표시됩니다.

코도바는 플러그인을 비동기 적으로 실행합니다. this case을 참조하십시오. 따라서 OpenGL/DirectX 플러그인이 사용하는 원시 코드는 UI 스레드에 액세스 할 수 없습니다.

현재 Windows 플랫폼을 대상으로 XAML을로드하는 다른 방법은 없습니다.

+0

에이스가 Windows에서 작동하지 않습니다. ( – Kyle

+0

@Kyle 당신 말이 맞아, 미안 해요. 대답을 업데이트했습니다. 현재 XAML 대상 창을로드하는 다른 방법은 없습니다. –