2013-10-09 3 views
9

Windowsランタイムコンポーネント(WRC)を使用するWindows Phoneアプリケーションを開発しています。非UIスレッドによってアクセスされる関数は、Windows Phoneアプリケーションにアクセスするコールバックを使用する必要があります。まずWindows PhoneでUIディスパッチャを取得する8

void WControlPointCallback::OnListChange(char *pFriendlyName) 
{ 
    // Callback function to access the UI 
    pCallBack->AlertCaller("Message"); 
} 

それは

Platform::AccessDeniedExceptionを投げたDispatcherを使用せずに。

それから私はthisthisthisに言及しました。 UIからDispatcherを取得しようとしました。

var dispatcher = Windows.UI.Core.CoreWindow.GetForCurrentThread().Dispatcher; 

私はC++コード(WRC)で

pDispatcher = Windows::UI::Core::CoreWindow::GetForCurrentThread()->Dispatcher; 

を使用.ButこれもPlatform::AccessDeniedExceptionをスローSystem.AccessViolationException .Thenを投げました。

Windows PhoneでUIのDispatcherを入手するにはどうすればよいですか?

+1

は 'あなたが' important'ていると思うwords'を強調するために 'コードtags'を使用しないでください。コードタグはコード用です。 – Charles

+0

@Charles提案してくれてありがとう.. – Naren

答えて

11

C++ for Windows Phone 8からディスパッチャを取得することはできません.C++側ではなく、C#側でUIディスパッチャへの呼び出しを移動する必要があります。

あなたはこのような何かを行うことができた場合:

class DotNetClass : IWindowsRuntimeInterface 
{ 
    void AlertCaller(string message) 
    { 
     Deployment.Current.Dispatcher.BeginInvoke(() => 
     { 
      MessageBox.Show(message); 
     } 
    } 
} 
+0

それは素晴らしいです。ありがとう、それは時間を大いに節約しました。私はこの問題を約2日間立ち上げました。 – Naren

+0

ありがとうLOTの仲間! :) – cesarferreira

関連する問題