我有以下两种方法。当用户从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
{
}
}
任何帮助我该如何解决这个问题?
答案 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";
});