Xamarin集合的随机例外已修改

时间:2019-04-18 20:21:50

标签: xamarin exception xamarin.forms xamarin.android crash

我创建了一个简单的导航应用程序,其中有多个屏幕,其中包含使用Skia夏普SVG的选取器,ListView,按钮和图像。

一切似乎都能正常运行,但有时它会在任何随机位置随机抛出异常。即使我将应用保持打开状态一段时间,我也会遇到同样的异常。

它给出的错误是

  

集合已修改;枚举操作可能无法执行”。

我试图调试它。每当它崩溃时,就会出现以下堆栈跟踪:

  

at System.Collections.Generic.List 1+Enumerator[T].MoveNextRare () [0x00013] in <58604b4522f748968296166e317b04b4>:0 at System.Collections.Generic.List 1 + Enumerator [T] .MoveNext()[0x0004a]在<58604b4522f748968296166e317b04b4>:0中     在Xamarin.Forms.Platform.Android.VisualElementTracker.HandleRedrawNeeded(System.Object sender,Xamarin.Forms.Internals.EventArg`1 [T] e)[0x00022]在D:\ a \ 1 \ s \ Xamarin.Forms.Platform中.Android \ VisualElementTracker.cs:180     在Xamarin.Forms.VisualElement.BatchCommit()[0x0001c]在D:\ a \ 1 \ s \ Xamarin.Forms.Core \ VisualElement.cs:581中     在Xamarin.Forms.AnimationExtensions.HandleTweenerFinished(System.Object o,System.EventArgs args)[0x000cb]在D:\ a \ 1 \ s \ Xamarin.Forms.Core \ AnimationExtensions.cs:276中     在Xamarin.Forms.Tweener.b__22_0(System.Int64步骤)[0x00095]在D:\ a \ 1 \ s \ Xamarin.Forms.Core \ Tweener.cs:103中     在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时间步)[0x00014]     在Xamarin.Forms.Platform.Android.AndroidTicker.OnValOnUpdate(System.Object发送者,Android.Animation.ValueAnimator + AnimatorUpdateEventArgs e)中,位于D:\ a \ 1 \ s \ Xamarin.Forms.Platform.Android \ AndroidTicker中。[0x00000]。 cs:71     在<2960acf2eeb24d88b5230e1e8afbdc2e>:0中的Android.Animation.ValueAnimator + IAnimatorUpdateListenerImplementor.OnAnimationUpdate(Android.Animation.ValueAnimator动画)[0x00017]处     在<2960acf2eeb24d88b5230e2e:0e2e0>     在(包装器动态方法)Android.Runtime.DynamicMethodNameCounter.17(intptr,intptr,intptr)

工具:

  • Visual Studio for Mac:8.0.3(内部版本14)
  • Xamarin Mac开发:8.0.2

测试设备:

  • 三星Galaxy S9
  • 联想Tab 3 7
  • 一加5T

1 个答案:

答案 0 :(得分:0)

就我而言,解决此问题的方法是,我在所有页面上都显示了一个自定义活动指示器视图以显示加载情况。在该视图的cs中,我正在运行3个任务以旋转3个圆圈,以显示持续不断的加载(等待几毫秒),并且从未停止过该任务。出于某种奇怪的原因,当我添加了一个实现,即页面消失时,它停止了所有任务,最终修复了此问题。它很奇怪,但确实对我有用。