调用Bing.Maps.Location类构造函数时出现异常

时间:2013-04-24 14:33:36

标签: c# windows-8 winrt-xaml bing-maps

使用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线程上做了某些事情,或者我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:3)

我没有进入代码来查看Bing Maps类中发生的情况,但是您无法在UI线程之外创建任何Bing Map“UI”对象。 我认为构造函数只测试是否在主线程上调用它,如果不是这样,则抛出异常。

意味着您必须在UI线程上实例化您的Location对象,还要在Polylines,Pins,Layers等中实例化

必须在UI线程中创建将添加到地图Control中的任何元素。