首页 > 解决方案 > 使用 GetPositionAsync Geolocator 时检测到异常

问题描述

我收到一个异常错误:System.Threading.Tasks.TaskCanceledException,同时尝试使用 Plugin.Geolocator 获取一些地理位置信息。

这是我得到的异常: System.Threading.Tasks.TaskCanceledException:任务已取消。在 Plugin.Geolocator.GeolocatorImplementation.GetPositionAsync (System.Nullable1[T] timeout, System.Nullable1[T] cancelToken, System.Boolean includeHeading) [0x004d3] in :0 at interface_test.MainPage.CreateMainPageAsync () [0x0018b] in /Users/khalidharkati/Projects/interface_test/interface_test/MainPage.xaml.cs:140 at interface_test。 App.OnStart () [0x0001a] in /Users/khalidharkati/Projects/interface_test/interface_test/App.xaml.cs:23 at System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.b__6_0 (System.Object state) [0x00000] in <58604b4522f748968296166e317b04b4>:0 at Android.App.SyncContext+<>c__DisplayClass2_0.b__0 () [0x00000] in <788a34f7a7b84486905dfde786529d42>:0 at Java.Lang.Thread+RunnableImplementor.Run () [0x00008] in <788a34f7a7b84486905dfde786529d42>:0 at Java .Lang.IRunnableInvoker.n_Run (System.IntPtr jnienv, System.IntPtr native__this) [0x00009] 在 <788a34f7a7b84486905dfde786529d42> 中:0 at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.40(intptr,intptr)

为了能够使用异步构造函数,我使用位置作为参数创建了一个:

public MainPage(Plugin.Geolocator.Abstractions.Position position)
{
    ...
}

然后我添加了这个方法来获得我的位置:

public static async Task<MainPage> CreateMainPageAsync()
{
    var locator = CrossGeolocator.Current;
    locator.DesiredAccuracy = 50;
    var position = await locator.GetPositionAsync(TimeSpan.FromSeconds(10));
    MainPage page = new MainPage(position);
    return page;
}

在 app.xaml.cs 文件中,我将此代码添加到OnStart()方法中:

protected override async void OnStart()
{
    interface_test.MainPage main = await interface_test.MainPage.CreateMainPageAsync();
    MainPage = main;
}

PS:在我更新一些组件、Xamarin 和一些包之前,我开始收到这个错误。

标签: c#xamaringeolocationtask

解决方案


我解决了,实际上,这听起来可能很愚蠢,但我只是忘记在手机上打开 GPS。而已 。


推荐阅读