Geolocator.RequestAccessAsync抛出“在意外时间调用的方法”异常

时间:2017-06-01 06:26:25

标签: exception gps uwp monogame

我有一大堆代码用于获取设备位置。这是在monogame windows uwp项目中完成的。以下代码之前有效(我在VS2015社区)。我最近做了一个新的操作系统并安装VS2017社区。我终于得到了我的项目来构建和运行。唯一不起作用的是Geolocator.RequestAccessAsync抛出“在意外时间调用的方法”异常。有什么想法吗?

public async Task<Vector2> GetDeviceGps()
{
        var accessStatus = await Geolocator.RequestAccessAsync();
        switch (accessStatus)
        {
            case GeolocationAccessStatus.Allowed:

                // If DesiredAccuracy or DesiredAccuracyInMeters are not set (or value is 0), DesiredAccuracy.Default is used.
                Geolocator geolocator = new Geolocator { DesiredAccuracyInMeters = 10 };

                // Subscribe to the StatusChanged event to get updates of location status changes.
                //geolocator.StatusChanged += OnStatusChanged;

                // Carry out the operation.
                Geoposition pos = await geolocator.GetGeopositionAsync();
                return new Vector2((float)pos.Coordinate.Point.Position.Longitude, (float)pos.Coordinate.Point.Position.Latitude);

            case GeolocationAccessStatus.Denied:
                //Do something!
                break;

            case GeolocationAccessStatus.Unspecified:
                //Murp
                break;
        }

        return Vector2.Zero;
    }

这样被调用和处理(从游戏的更新方法调用):

mapper.GetDeviceGps().ContinueWith(pos =>
{
      Vector2 bob = pos.Result;

 });

1 个答案:

答案 0 :(得分:0)

当您第一次在应用中运行RequestAccessAsync时,系统会要求用户授予您的应用位置权限。因此,该方法需要在UI线程中执行。