使用Bing地图控件时,对于Windows 8商店应用,在非UI线程上创建新的Location object会导致异常。
WinRT信息:该应用程序称为接口 为不同的线程编组。
通常这意味着我不正当地尝试从后台线程更新UI但是情况并非如此,因为可以通过在空的Windows 8商店应用程序项目中放置一个按钮来重现:
<Button Content="Click me" Click="Button_Click"/>
并添加如下事件处理程序:
private void Button_Click(object sender, RoutedEventArgs e)
{
Task.Run(() =>
{
var loc = new Location(1, 1);
});
}
Location struct的构造函数是否真的在UI线程上做了某些事情,或者我在这里遗漏了什么?
答案 0 :(得分:3)
我没有进入代码来查看Bing Maps类中发生的情况,但是您无法在UI线程之外创建任何Bing Map“UI”对象。 我认为构造函数只测试是否在主线程上调用它,如果不是这样,则抛出异常。
意味着您必须在UI线程上实例化您的Location对象,还要在Polylines,Pins,Layers等中实例化
。必须在UI线程中创建将添加到地图Control中的任何元素。