0

GetGeoPositionAsync()在我的应用程序中使用过,它在另一个功能的代码中运行良好,但是在我当前正在实现的功能中使用它时,它在我第一次尝试调用它时冻结,第二次运行。从另一个页面导航时,我调用此函数。这是代码:

   private async Task GetLocation()
   {
        Geolocator myGeolocator = new Geolocator();
        Geoposition myGeoposition = null;
        try
        {
            myGeoposition = await myGeolocator.GetGeopositionAsync();
        }
        catch (Exception ex)
        {
            if ((uint)ex.HResult == 0x80004004)
            {
                MessageBox.Show("Unauthorized access.");
            }
        }
    }

我尝试浏览 SO,但还没有找到一个可行的解决方案。为什么它在某些代码中起作用,而在某些代码中却不起作用。这种行为的原因是什么?

4

2 回答 2

4

好的,所以我找到了解决方案:

        try
        {
            IAsyncOperation<Geoposition> locationTask = null;
            try
            {
                locationTask = myGeolocator.GetGeopositionAsync(TimeSpan.FromMinutes(1), TimeSpan.FromSeconds(3));
                myGeoposition = await locationTask;
            }
            finally
            {
                if (locationTask != null)
                {
                    if (locationTask.Status == AsyncStatus.Started)
                        locationTask.Cancel();

                    locationTask.Close();
                }
            }
        }
于 2013-09-12T09:13:37.150 回答
0

这听起来像位置被缓存了!第一次调用该方法时,它会尝试获取您的位置(如果您在建筑物内,这可能需要几秒钟),第二次它似乎使用缓存的位置。

于 2013-09-10T15:15:35.863 回答