我创建了一个简单的导航应用程序,其中有多个屏幕,其中包含使用Skia sharp SVG的Pickers,ListViews,按钮和图像。
一切似乎都正常运行,但有时它随机会在任何随机位置抛出异常。即使我将应用程序打开一段时间,我也会遇到同样的异常。
它给出的错误是
收集被修改;枚举操作可能不会执行“。
我试着调试它。每次崩溃并出现以下堆栈跟踪:
at System.Collections.Generic.List
1+Enumerator[T].MoveNextRare () [0x00013] in <58604b4522f748968296166e317b04b4>:0 at System.Collections.Generic.List
1 + Enumerator [T] .MoveNext()[0x0004a] in <58604b4522f748968296166e317b04b4>:0 at Xamarin.Forms.Platform.Android.VisualElementTracker.HandleRedrawNeeded(System.Object sender,Xamarin.Forms.Internals。 D:\ a \ 1 \ s \ Xamarin.Forms.Platform.Android \ VisualElementTracker.cs中的EventArg`1 [T] e)[0x00022]:在X中的Xamarin.Forms.VisualElement.BatchCommit()[0x0001c]中的180: \ a \ 1 \ s \ Xamarin.Forms.Core \ VisualElement.cs:581在D:\ a \ 1 \ s \中的Xamarin.Forms.AnimationExtensions.HandleTweenerFinished(System.Object o,System.EventArgs args)[0x000cb] Xamarin.Forms.Core \ AnimationExtensions.cs:276 at Xamarin.Forms.Tweener.b__22_0(System.Int64 step)[0x00095]在D:\ a \ 1 \ s \ Xamarin.Forms.Core \ Tweener.cs:103 at在Xamarin.Forms.Internals.Ticker的D:\ a \ 1 \ s \ Xamarin.Forms.Core \ Internals \ Ticker.cs:102中的Xamarin.Forms.Internals.Ticker.SendSignals(System.Int64步骤)[0x0003c]。 Xamarin的D:\ a \ 1 \ s \ Xamarin.Forms.Core \ Internals \ Ticker.cs:91中的SendSignals(System.Int32 timestep)[0x00014] D:\ a \ 1 \ s \ Xamarin.Forms.Platform.Android \ AndroidTicker.cs中的.Forms.Platform.Android.AndroidTicker.OnValOnUpdate(System.Object sender,Android.Animation.ValueAnimator + AnimatorUpdateEventArgs e)[0x00000]: 71 Android.Animation.ValueAnimator + IAnimatorUpdateListenerImplementor.OnAnimationUpdate(Android.Animation.ValueAnimator动画)[0x00017]在<2960acf2eeb24d88b5230e1e8afbdc2e>:0在Android.Animation.ValueAnimator + IAnimatorUpdateListenerInvoker.n_OnAnimationUpdate_Landroid_animation_ValueAnimator_(System.IntPtr JNIEnv的,System.IntPtr native__this,系统.IntPtr native_animation)[0x00011]在<2960acf2eeb24d88b5230e1e8afbdc2e>:0 at(wrapper dynamic-method)Android.Runtime.DynamicMethodNameCounter.17(intptr,intptr,intptr)
工具:
测试设备:
在我的情况下修复问题的是,我在所有页面上显示自定义活动指示器视图以显示加载。在该视图的cs中,我正在运行3个任务来旋转3个圆圈以显示连续加载,等待几毫秒并且从未停止任务。由于一些奇怪的原因,当我添加一个实现,当页面消失时,它会停止所有修复此问题的任务。它很奇怪,但确实对我有用。