iOS (Xamarin Forms)启动位置数据源的问题

510
1
06-24-2021 08:00
MichaelHamsa
通过
偶然的因素

你好,

我们已经在iOS上看到一个非常零星的问题,当应用程序启动位置数据源时,会导致一个未处理的异常。这种情况只发生过几次,但我们想要弄清真相。我们不确定它来自哪里,所以我们想在这里发布一些东西,看看是否有人有任何想法。

任何意见都将不胜感激。

下面是错误发生时我们得到的异常和堆栈跟踪:

无效参数:位置数据源已启动。

ArcGISException。HandleCoreError (RuntimeCoreNet.GeneratedWrappers。CoreError错误,系统。布尔throwException)
交互操作。CheckError(系统。IntPtr errorHandle,系统。Boolean throwOnFailure, System.Runtime.InteropServices.GCHandle wrapperHandle)
CoreLocationDataSource。HandleStart (RuntimeCoreNet.GeneratedWrappers。CoreClientReference userDefinedError)
ICoreCallback_LocationDataSource_StartCallback。StartCallback ()
AsyncMethodBuilderCore + < > c。< ThrowAsync > b__7_0(系统。对象状态)
NSAsyncSynchronizationContextDispatcher。应用()
UIKit.UIApplication.UIApplicationMain(int,string[],intptr,intptr)
UIApplication。主要(系统。字符串[]args,系统。IntPtr主体,系统。IntPtr委托)
UIApplication。主要(系统。字符串[]args,系统。字符串principalClassName, System。字符串delegateClassName)
应用程序。主要(系统。String [] args)

0荣誉
1回复
JoeHershman
通过 常规赛MVP
常规赛MVP

我曾经看到过类似的错误(或者可能是相同的错误)。我从来没有真正追踪它,根据描述,似乎它想尝试第二次启动位置数据源。不确定你只是在使用内部位置还是有外部位置。

我做了几件事,当使用外部GPS时,我一定要设置LocationDisplay。数据源在主线程上

/ / LocationProvider。LocationDataSource是一个指向外部自定义LocationDataSource MainThread.BeginInvokeOnMainThread(() => mapView.LocationDisplay.DataSource = LocationProvider.LocationDataSource)的指针;

同样,要确保StartAsync在运行后不会被发送

mapView.LocationDisplay.DataSource. if (!IsStarted) {mapView.LocationDisplay.IsEnabled = true;}

祝你好运

0荣誉