集合的 Xamarin 随机异常已修改
Xamarin Random Exception of Collection Modified
我创建了一个简单的导航应用程序,其中有多个屏幕,其中包含使用 Skia sharp SVG 的选择器、ListView、按钮和图像。
似乎一切正常,但有时会在任意位置随机抛出异常。即使我让应用程序打开一段时间,我也会遇到同样的异常。
它给出的错误是
Collection was modified; enumeration operation may not execute".
我试过调试它。每次崩溃并出现以下堆栈跟踪时:
at System.Collections.Generic.List1+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.EventArg`1[T] e) [0x00022] in D:\a\s\Xamarin.Forms.Platform.Android\VisualElementTracker.cs:180
at Xamarin.Forms.VisualElement.BatchCommit () [0x0001c] in D:\a\s\Xamarin.Forms.Core\VisualElement.cs:581
at Xamarin.Forms.AnimationExtensions.HandleTweenerFinished (System.Object o, System.EventArgs args) [0x000cb] in D:\a\s\Xamarin.Forms.Core\AnimationExtensions.cs:276
at Xamarin.Forms.Tweener.b__22_0 (System.Int64 step) [0x00095] in D:\a\s\Xamarin.Forms.Core\Tweener.cs:103
at Xamarin.Forms.Internals.Ticker.SendSignals (System.Int64 step) [0x0003c] in D:\a\s\Xamarin.Forms.Core\Internals\Ticker.cs:102
at Xamarin.Forms.Internals.Ticker.SendSignals (System.Int32 timestep) [0x00014] in D:\a\s\Xamarin.Forms.Core\Internals\Ticker.cs:91
at Xamarin.Forms.Platform.Android.AndroidTicker.OnValOnUpdate (System.Object sender, Android.Animation.ValueAnimator+AnimatorUpdateEventArgs e) [0x00000] in D:\a\s\Xamarin.Forms.Platform.Android\AndroidTicker.cs:71
at Android.Animation.ValueAnimator+IAnimatorUpdateListenerImplementor.OnAnimationUpdate (Android.Animation.ValueAnimator animation) [0x00017] in <2960acf2eeb24d88b5230e1e8afbdc2e>:0
at Android.Animation.ValueAnimator+IAnimatorUpdateListenerInvoker.n_OnAnimationUpdate_Landroid_animation_ValueAnimator_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_animation) [0x00011] in <2960acf2eeb24d88b5230e1e8afbdc2e>:0
at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.17(intptr,intptr,intptr)
工具:
- Visual Studio 对于 Mac:8.0.3(内部版本 14)
- Xamarin Mac 开发:8.0.2
测试设备:
- 三星 Galaxy S9
- 联想 Tab 3 7
- 一加5T
在我的例子中,解决问题的是,我在所有页面上显示自定义 activity 指示器视图以显示加载。在该视图的 cs 中,我是 运行 3 任务旋转 3 圈以等待几毫秒连续显示加载并且从未停止任务。出于某种奇怪的原因,当我添加一个实现时,当页面消失时,它会停止所有任务,最终解决了这个问题。这很奇怪,但它确实对我有用。
我创建了一个简单的导航应用程序,其中有多个屏幕,其中包含使用 Skia sharp SVG 的选择器、ListView、按钮和图像。
似乎一切正常,但有时会在任意位置随机抛出异常。即使我让应用程序打开一段时间,我也会遇到同样的异常。
它给出的错误是
Collection was modified; enumeration operation may not execute".
我试过调试它。每次崩溃并出现以下堆栈跟踪时:
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.EventArg`1[T] e) [0x00022] in D:\a\s\Xamarin.Forms.Platform.Android\VisualElementTracker.cs:180 at Xamarin.Forms.VisualElement.BatchCommit () [0x0001c] in D:\a\s\Xamarin.Forms.Core\VisualElement.cs:581 at Xamarin.Forms.AnimationExtensions.HandleTweenerFinished (System.Object o, System.EventArgs args) [0x000cb] in D:\a\s\Xamarin.Forms.Core\AnimationExtensions.cs:276 at Xamarin.Forms.Tweener.b__22_0 (System.Int64 step) [0x00095] in D:\a\s\Xamarin.Forms.Core\Tweener.cs:103 at Xamarin.Forms.Internals.Ticker.SendSignals (System.Int64 step) [0x0003c] in D:\a\s\Xamarin.Forms.Core\Internals\Ticker.cs:102 at Xamarin.Forms.Internals.Ticker.SendSignals (System.Int32 timestep) [0x00014] in D:\a\s\Xamarin.Forms.Core\Internals\Ticker.cs:91 at Xamarin.Forms.Platform.Android.AndroidTicker.OnValOnUpdate (System.Object sender, Android.Animation.ValueAnimator+AnimatorUpdateEventArgs e) [0x00000] in D:\a\s\Xamarin.Forms.Platform.Android\AndroidTicker.cs:71 at Android.Animation.ValueAnimator+IAnimatorUpdateListenerImplementor.OnAnimationUpdate (Android.Animation.ValueAnimator animation) [0x00017] in <2960acf2eeb24d88b5230e1e8afbdc2e>:0 at Android.Animation.ValueAnimator+IAnimatorUpdateListenerInvoker.n_OnAnimationUpdate_Landroid_animation_ValueAnimator_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_animation) [0x00011] in <2960acf2eeb24d88b5230e1e8afbdc2e>:0 at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.17(intptr,intptr,intptr)
工具:
- Visual Studio 对于 Mac:8.0.3(内部版本 14)
- Xamarin Mac 开发:8.0.2
测试设备:
- 三星 Galaxy S9
- 联想 Tab 3 7
- 一加5T
在我的例子中,解决问题的是,我在所有页面上显示自定义 activity 指示器视图以显示加载。在该视图的 cs 中,我是 运行 3 任务旋转 3 圈以等待几毫秒连续显示加载并且从未停止任务。出于某种奇怪的原因,当我添加一个实现时,当页面消失时,它会停止所有任务,最终解决了这个问题。这很奇怪,但它确实对我有用。