0

次の2つの方法があります。ユーザーが UI から開始ボタンをクリックすると、geoLocator_PositionChanged メソッドのステップ geoLocator_PositionChanged が起動され、他のメソッド geoLocator_PositionChanged が呼び出されます。しかし、最初のステートメントの実行中に try ブロックになると、次のエラーがスローされます。

「アプリケーションは、別のスレッド用にマーシャリングされたインターフェイスを呼び出しました。(HRESULT からの例外: 0x8001010E (RPC_E_WRONG_THREAD))」

private async void btnStartStop_Click_1(オブジェクト送信者, RoutedEventArgs e)

    {
      geoLocator.PositionChanged += geoLocator_PositionChanged; 
     }

async void geoLocator_PositionChanged (Geolocator 送信者、PositionChangedEventArgs args)

    {

        MessageDialog msgdlg = null;
        bool bDisplayDialog = false;
        try
        {
            lblAltValue.Text = args.Position.Coordinate.Altitude.ToString();  
    }
    catch
    {
    }
    }

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

3

別の UI スレッドから UI スレッドにアクセスしようとしています。

このようなものを試してください

Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync
(Windows.UI.Core.CoreDispatcherPriority.Normal, () => 
{
    //HERE GOES THE UI ACCESS LIKE this.textbox.text = "MY AWESOME TEXT"; 
});
于 2012-11-28T15:40:17.670 に答える