已修改集合的Xamarin随机异常

已修改集合的Xamarin随机异常,xamarin,exception,xamarin.forms,xamarin.android,crash,Xamarin,Exception,Xamarin.forms,Xamarin.android,Crash,我创建了一个简单的导航应用程序,其中有多个屏幕,其中包含选择器、列表视图、按钮和使用Skia sharp SVG的图像 一切似乎都正常运行,但有时它会在任意位置随机抛出异常。即使我让应用程序打开一段时间,我也会遇到同样的异常 它给出的错误是 收集被修改;枚举操作不能执行” 我试图调试它。每次它崩溃并出现以下堆栈跟踪时: 位于System.Collections.Generic.List1+枚举器[T].MoveNextRare()[0x00013]中:0 位于System.Collections

我创建了一个简单的导航应用程序,其中有多个屏幕,其中包含选择器、列表视图、按钮和使用Skia sharp SVG的图像

一切似乎都正常运行,但有时它会在任意位置随机抛出异常。即使我让应用程序打开一段时间,我也会遇到同样的异常

它给出的错误是

收集被修改;枚举操作不能执行”

我试图调试它。每次它崩溃并出现以下堆栈跟踪时:

位于System.Collections.Generic.List
1+枚举器[T].MoveNextRare()[0x00013]中:0
位于System.Collections.Generic.List
1+枚举数[T].MoveNext()[0x0004a]中:0 位于D:\a\1\s\Xamarin.Forms.Platform.Android.VisualElementTracker.HandleredRandeed中的Xamarin.Forms.Internals.EventArg`1[T]e)[0x00022] 位于D:\a\1\s\Xamarin.Forms.Core\VisualElement.cs:581中的Xamarin.Forms.VisualElement.BatchCommit()[0x0001c] 在D:\a\1\s\Xamarin.Forms.Core\AnimationExtensions.cs中的Xamarin.Forms.AnimationExtensions.handletweenerfished(System.Object o,System.EventArgs args)[0x000cb]处 位于D:\a\1\s\Xamarin.Forms.Core\Tweener.cs:103中的Xamarin.Forms.Tweener.b_uu22_0(System.Int64步骤)[0x00095] 在D:\a\1\s\Xamarin.Forms.Core\Internals\Ticker.cs:102中的Xamarin.Forms.Internals.Ticker.SendSignals(System.Int64步骤)[0x0003c]处 位于D:\a\1\s\Xamarin.Forms.Core\Internals\Ticker.cs:91中的Xamarin.Forms.Internals.Ticker.SendSignals(System.Int32 timestep)[0x00014] 位于D:\a\1\s\Xamarin.Forms.Platform.Android.Android.ticker.OnValOnUpdate中的Xamarin.Forms.Platform.Android.Android.ticker.OnValOnUpdate(System.Object sender,Android.Animation.ValueAnimator+AnimatorUpdateEventArgs e)[0x00000] 在0中的Android.Animation.ValueAnimator+IAnimatorUpdateListenerImplementor.OnAnimationUpdate(Android.Animation.ValueAnimator动画)[0x00017]处 在Android.Animation.ValueAnimator+IAnimatorUpdateListenerInvoker.n\u OnAnimationUpdate\u Landroid\u Animation\u ValueAnimator\u(System.IntPtr jnienv,System.IntPtr native\u this,System.IntPtr native\u Animation)[0x00011]in:0 at(包装器动态方法)Android.Runtime.DynamicMethodNameCounter.17(intptr,intptr,intptr)

工具:

  • Visual Studio for Mac:8.0.3(版本14)
  • Xamarin Mac开发:8.0.2
测试设备:

  • 三星Galaxy S9
  • 联想标签3 7
  • 一加五吨

在我的情况下,解决问题的是,我在所有页面上显示自定义活动指示器视图以显示加载。在该视图的cs中,我运行了3个任务以旋转3圈以显示加载,持续等待几毫秒,并且从未停止任务。出于某种奇怪的原因,当我添加一个实现时,页面消失它停止了所有任务,在我这边解决了这个问题。这很奇怪,但它确实对我有效。

在我的情况下,解决了这个问题的是,我在所有页面上显示了一个自定义活动指示器视图,以显示加载。在该视图的cs中,我运行了3个任务,旋转3圈,以显示持续加载,等待几毫秒而且从来没有停止过任务。出于某种奇怪的原因,当我添加了一个实现,当页面消失时,它停止了所有的任务,并在我这端解决了这个问题。这很奇怪,但它确实对我起了作用。

查看堆栈,似乎是动画代码中的某些内容导致了问题。您为正在运行的表单动画编写的代码是什么?我使用动画的唯一地方是旋转我的自定义活动指示器。它的代码如下:Task.Run(()=>rotateimagecontinulous(circle1300));async Task rotateimagecontinulous(SvgXF.Icon image,uint timeforochunk){while(IsVisible)//现实生活中的取消令牌;-){for(inti=1;i<7;i++{if(image.Rotation>=360f)image.Rotation=0;wait image.RotateTo(i*(360/6),timeforochuck,Easing.Linear);}}}}}}顺便说一句,感谢您的快速回复,并为我提供了调查问题的方向(y)@UmairBhatti Hi,你解决了这个问题吗?@JuniorJiang MSFT很抱歉回复晚了。在我的情况下,解决了这个问题的是,我在所有页面上显示了一个自定义活动指示器视图以显示加载。在该视图的cs中,我运行了3个任务,旋转3圈以显示加载,并持续等待几毫秒,并且从未停止ping任务。出于某种奇怪的原因,当我添加了一个实现,当页面消失时,它会停止所有任务,并在我结束时修复了此问题。这很奇怪,但它确实对我起了作用。查看堆栈,似乎是动画代码中的某些内容导致了此问题。正在运行的表单动画的代码是什么?我唯一要介绍的地方是我们我正在旋转我的自定义活动指示器。它的代码如下:Task.Run(()=>RotateImageContinously(Circle1300));async Task RotateImageContinously(SvgXF.Icon image,uint timeforonchunk){while(IsVisible)//现实生活中的一个CancellationToken;-){for(int i=1;i<7;i++){if(image.Rotation>=360f)image.Rotation=0;wait image.RotateTo(i*(360/6),timeforochuck,Easing.Linear);}}}}}}}}顺便说一句,感谢您的快速回复,并为我提供了调查问题的指导(y)@UmairBhatti Hi,你解决了这个问题吗?@JuniorJiang MSFT很抱歉回复晚了。在我的情况下,解决了这个问题的是,我在所有页面上显示了一个自定义活动指示器视图以显示加载。在该视图的cs中,我运行了3个任务,旋转3圈以显示加载,并持续等待几毫秒,并且从未停止圆周率