带有线程的Windows 8 xaml Modern app中的错误

时间:2012-11-28 15:29:52

标签: windows-8 windows-runtime winrt-xaml winrt-async

我有以下两种方法。当用户从ui单击开始按钮时,geoLocator_PositionChanged方法中的步骤geoLocator_PositionChanged被触发并调用另一个方法geoLocator_PositionChanged.But,当执行第一个语句时尝试阻止它会抛出以下错误:

"应用程序调用了为不同线程编组的接口。 (来自HRESULT的异常:0x8001010E(RPC_E_WRONG_THREAD))"

private async void btnStartStop_Click_1(object sender,RoutedEventArgs e)

    {
      geoLocator.PositionChanged += geoLocator_PositionChanged; 
     }

async void geoLocator_PositionChanged(Geolocator sender,PositionChangedEventArgs args)

    {

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

任何帮助我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

您尝试从另一个访问UI-Thread。

尝试像

这样的东西
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"; 
});