Animation Xamarin表单动画过载错误?
当涉及到Xamarin形式的连续和/或同时动画(自定义或其他)的数量时,是否存在某种限制 下面是我正在处理的一个简单示例:Animation Xamarin表单动画过载错误?,animation,xamarin,xamarin.ios,xamarin.android,xamarin.forms,Animation,Xamarin,Xamarin.ios,Xamarin.android,Xamarin.forms,当涉及到Xamarin形式的连续和/或同时动画(自定义或其他)的数量时,是否存在某种限制 下面是我正在处理的一个简单示例: protected void ShowAlertMessage(string message) { lblAlertMessage.Text = message; this.AbortAnimation("AlertShow"); // crash happens with and without this...
protected void ShowAlertMessage(string message)
{
lblAlertMessage.Text = message;
this.AbortAnimation("AlertShow"); // crash happens with and without this...
new Animation {
{ 0, 0.1, new Animation(v => AlertView.Opacity = v, 0.0, 1.0) },
{ 0.1, 0.6, new Animation(v => AlertView.Opacity = v, 1.0, 1.0) },
{ 0.6, 1.0, new Animation(v => AlertView.Opacity = v, 1.0, 0) },
}.Commit(this, "AlertShow", length: 3000);
}
动画本身运行良好。AlertView视图淡入、维持,然后淡出。动画完成后,我再次调用该函数,它工作正常。当ActVIEW处于运行动画的中间时,我再次调用该函数,它仍然很好,它重新启动动画。但是,如果我将调用ShowAlertMessage()的按钮以极快的速度捣乱,那么iPhone emulator就会崩溃,并出现以下堆栈跟踪(我包括了整个过程……当一个新线程在封面下启动时,看起来可能会发生一些事情……):
2017-06-24 12:20:37.595 RootTuner.iOS[19386:887418]关键:堆栈跟踪:
2017-06-24 12:20:37.596 RootTuner.iOS[19386:887418]临界:在
2017-06-24 12:20:37.596 RootTuner.iOS[19386:887418]严重:at(包装管理为本机)ObjCRuntime.Messaging.void_objc_msgSend_float(intptr,intptr,single)[0x0000b]in:0
2017-06-24 12:20:37.597 RootTuner.iOS[19386:887418]临界:在/Users/builder/data/lanes/4691/d2270eec/source/xamarin macios/src/build/iOS/native/CoreAnimation/CALayer.g.cs:1714中的CoreAnimation.CALayer.set_不透明度(单个)[0x0000b]
2017-06-24 12:20:37.597 RootTuner.iOS[19386:887418]临界:在Xamarin.Forms.Platform.iOS.VisualElementTracker/c_u显示类23_0.b_u0()[0x0015a]中的c:\BuildAgent\work\ca3766cfc22354a1\Xamarin.Forms.platforms.platforms.iOS\VisualElementTracker.cs:178
2017-06-24 12:20:37.597 RootTuner.iOS[19386:887418]临界:位于C:\BuildAgent\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\CADisplayLinkTicker.StartThread()[0x00025]中的Xamarin.Forms.playlinkticker.cs:60
2017-06-24 12:20:37.598 RootTuner.iOS[19386:887418]临界:在/Library/Frameworks/Xamarin.iOS.framework/Versions/10.10.0.36/src/mono/mcs/class/referencesource/mscorlib/System/Threading/thread.cs:68中的System.Threading/start_上下文(对象)[0x00014]
2017-06-24 12:20:37.598 RootTuner.iOS[19386:887418]严重:位于System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool)[0x00071]在/Library/Frameworks/Xamarin.iOS.framework/Versions/10.10.0.36/src/mono/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:957中
2017-06-24 12:20:37.598 RootTuner.iOS[19386:887418]临界:在System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool)[0x00000]in/Library/Frameworks/Xamarin.iOS.framework/Versions/10.10.0.36/src/mono/mcs/class/referencesource/mscorlib/System/Threading/ExecutionContext.cs:904
2017-06-24 12:20:37.598 RootTuner.iOS[19386:887418]临界:在System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,System.Threading.ContextCallback,object)[0x0002b]in/Library/Frameworks/Xamarin.iOS.framework/Versions/10.10.0.36/src/mono/mcs/class/referencesource/mscorlib/System/Threading/ExecutionContext.cs.cs:893
2017-06-24 12:20:37.599 RootTuner.iOS[19386:887418]关键:在/Library/Frameworks/Xamarin.iOS.framework/Versions/10.10.0.36/src/mono/mcs/class/referencesource/mscorlib/System/Threading/thread.cs:105中的System.thread.thread.start()[0x00008]
2017-06-24 12:20:37.599 RootTuner.iOS[19386:887418]严重:at(包装器运行时调用)object.runtime_invoke_void_this____(object,intptr,intptr,intptr)[0x0004f]in:0
2017-06-24 12:20:37.599 RootTuner.iOS[19386:887418]严重:
本机堆栈跟踪:
2017-06-24 12:20:37.606 RootTuner.iOS[19386:887418]严重:0 RootTuner.iOS 0x000000010fdfc501 mono\u handle\u native\u崩溃+257
2017-06-24 12:20:37.607 RootTuner.iOS[19386:887418]严重:1 RootTuner.iOS 0x000000010fe095d0单声道信号处理器+288
2017-06-24 12:20:37.607 RootTuner.iOS[19386:887418]严重:2 libsystem_platform.dylib 0x000000011bbba_sigtramp+26
2017-06-24 12:20:37.607 RootTuner.iOS[19386:887418]严重:3???0x0000000000000000 0x0+0
2017-06-24 12:20:37.607 RootTuner.iOS[19386:887418]临界:4夸脱核心0x000000011dc0a9ab\u ZL18CAAnimation\u setterp1caanimation J12\u CAValueTypePKv+169
2017-06-24 12:20:37.608 RootTuner.iOS[19386:887418]临界:5夸脱核心0x000000011dc03d5a-[CAAnimation setDelegate:+30
2017-06-24 12:20:37.608 RootTuner.iOS[19386:887418]临界:6 UIKit 0x0000000114057c39-[UIViewAnimationState SetAnimationAttribute:correctZeroDuration:SkipDeleteAssignment:customCurve:+1094
2017-06-24 12:20:37.609 RootTuner.iOS[19386:887418]临界:7 UIKit 0x0000000114054475-[UIViewAnimationState animationForLayer:forKey:forView:+1195
2017-06-24 12:20:37.609 RootTuner.iOS[19386:887418]临界:8 UIKit 0x0000000114055178-[UIViewAnimationState actionForLayer:forKey:forView:+99
2017-06-24 12:20:37.609 RootTuner.iOS[19386:887418]临界:9 UIKit 0x000000011408052e+[UIView(动画)\u defaultUIViewActionForLayer:forKey:+111
2017-06-24 12:20:37.609 RootTuner.iOS[19386:887418]临界:10 UIKit 0x000000011485e8ec-[UIView(UIKitManual)操作层:forKey:+119
2017-06-24 12:20:37.610 RootTuner.iOS[19386:887418]临界:11夸脱核心0x000000011dbda4bc-[CALayer actionForKey:][437
2017-06-24 12:20:37.610 RootTuner.iOS[19386:887418]临界值:12夸脱核心0x000000011dbd5ade\u ZL12actionForKeyP7CALayerPN2CA11TransactionEP8NSString+76
2017-06-24 12:20:37.610 RootTuner.iOS[19386:887418]
2017-06-24 12:20:37.595 RootTuner.iOS[19386:887418] critical: Stacktrace:
2017-06-24 12:20:37.596 RootTuner.iOS[19386:887418] critical: at <unknown> <0xffffffff>
2017-06-24 12:20:37.596 RootTuner.iOS[19386:887418] critical: at (wrapper managed-to-native) ObjCRuntime.Messaging.void_objc_msgSend_float (intptr,intptr,single) [0x0000b] in <58a9bd8a3cbb4d0092bc0a767ff66c0f>:0
2017-06-24 12:20:37.597 RootTuner.iOS[19386:887418] critical: at CoreAnimation.CALayer.set_Opacity (single) [0x0000b] in /Users/builder/data/lanes/4691/d2270eec/source/xamarin-macios/src/build/ios/native/CoreAnimation/CALayer.g.cs:1714
2017-06-24 12:20:37.597 RootTuner.iOS[19386:887418] critical: at Xamarin.Forms.Platform.iOS.VisualElementTracker/<>c__DisplayClass23_0.<OnUpdateNativeControl>b__0 () [0x0015a] in C:\BuildAgent\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\VisualElementTracker.cs:178
2017-06-24 12:20:37.597 RootTuner.iOS[19386:887418] critical: at Xamarin.Forms.Platform.iOS.CADisplayLinkTicker.StartThread () [0x00025] in C:\BuildAgent\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\CADisplayLinkTicker.cs:60
2017-06-24 12:20:37.598 RootTuner.iOS[19386:887418] critical: at System.Threading.ThreadHelper.ThreadStart_Context (object) [0x00014] in /Library/Frameworks/Xamarin.iOS.framework/Versions/10.10.0.36/src/mono/mcs/class/referencesource/mscorlib/system/threading/thread.cs:68
2017-06-24 12:20:37.598 RootTuner.iOS[19386:887418] critical: at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool) [0x00071] in /Library/Frameworks/Xamarin.iOS.framework/Versions/10.10.0.36/src/mono/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:957
2017-06-24 12:20:37.598 RootTuner.iOS[19386:887418] critical: at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool) [0x00000] in /Library/Frameworks/Xamarin.iOS.framework/Versions/10.10.0.36/src/mono/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:904
2017-06-24 12:20:37.598 RootTuner.iOS[19386:887418] critical: at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object) [0x0002b] in /Library/Frameworks/Xamarin.iOS.framework/Versions/10.10.0.36/src/mono/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:893
2017-06-24 12:20:37.599 RootTuner.iOS[19386:887418] critical: at System.Threading.ThreadHelper.ThreadStart () [0x00008] in /Library/Frameworks/Xamarin.iOS.framework/Versions/10.10.0.36/src/mono/mcs/class/referencesource/mscorlib/system/threading/thread.cs:105
2017-06-24 12:20:37.599 RootTuner.iOS[19386:887418] critical: at (wrapper runtime-invoke) object.runtime_invoke_void__this__ (object,intptr,intptr,intptr) [0x0004f] in <2f4074c3120b4d80802e10af84b67d41>:0
2017-06-24 12:20:37.599 RootTuner.iOS[19386:887418] critical:
Native stacktrace:
2017-06-24 12:20:37.606 RootTuner.iOS[19386:887418] critical: 0 RootTuner.iOS 0x000000010fdfc501 mono_handle_native_crash + 257
2017-06-24 12:20:37.607 RootTuner.iOS[19386:887418] critical: 1 RootTuner.iOS 0x000000010fe095d0 mono_sigsegv_signal_handler + 288
2017-06-24 12:20:37.607 RootTuner.iOS[19386:887418] critical: 2 libsystem_platform.dylib 0x000000011bbfbbba _sigtramp + 26
2017-06-24 12:20:37.607 RootTuner.iOS[19386:887418] critical: 3 ??? 0x0000000000000000 0x0 + 0
2017-06-24 12:20:37.607 RootTuner.iOS[19386:887418] critical: 4 QuartzCore 0x000000011dc0a9ab _ZL18CAAnimation_setterP11CAAnimationj12_CAValueTypePKv + 169
2017-06-24 12:20:37.608 RootTuner.iOS[19386:887418] critical: 5 QuartzCore 0x000000011dc03d5a -[CAAnimation setDelegate:] + 30
2017-06-24 12:20:37.608 RootTuner.iOS[19386:887418] critical: 6 UIKit 0x0000000114057c39 -[UIViewAnimationState setAnimationAttributes:correctZeroDuration:skipDelegateAssignment:customCurve:] + 1094
2017-06-24 12:20:37.609 RootTuner.iOS[19386:887418] critical: 7 UIKit 0x0000000114054475 -[UIViewAnimationState animationForLayer:forKey:forView:] + 1195
2017-06-24 12:20:37.609 RootTuner.iOS[19386:887418] critical: 8 UIKit 0x0000000114055178 -[UIViewAnimationState actionForLayer:forKey:forView:] + 99
2017-06-24 12:20:37.609 RootTuner.iOS[19386:887418] critical: 9 UIKit 0x000000011408052e +[UIView(Animation) _defaultUIViewActionForLayer:forKey:] + 111
2017-06-24 12:20:37.609 RootTuner.iOS[19386:887418] critical: 10 UIKit 0x000000011485e8ec -[UIView(UIKitManual) actionForLayer:forKey:] + 119
2017-06-24 12:20:37.610 RootTuner.iOS[19386:887418] critical: 11 QuartzCore 0x000000011dbda4bc -[CALayer actionForKey:] + 437
2017-06-24 12:20:37.610 RootTuner.iOS[19386:887418] critical: 12 QuartzCore 0x000000011dbd5ade _ZL12actionForKeyP7CALayerPN2CA11TransactionEP8NSString + 76
2017-06-24 12:20:37.610 RootTuner.iOS[19386:887418] critical: 13 QuartzCore 0x000000011dbd5a6c _ZN2CA5Layer12begin_changeEPNS_11TransactionEjRP11objc_object + 140
2017-06-24 12:20:37.611 RootTuner.iOS[19386:887418] critical: 14 QuartzCore 0x000000011dbd5e04 _ZN2CA5Layer6setterEj12_CAValueTypePKv + 164
2017-06-24 12:20:37.611 RootTuner.iOS[19386:887418] critical: 15 QuartzCore 0x000000011dbe1351 -[CALayer setOpacity:] + 43
2017-06-24 12:20:37.611 RootTuner.iOS[19386:887418] critical: 16 RootTuner.iOS 0x000000010ffbe429 xamarin_dyn_objc_msgSend + 217
2017-06-24 12:20:37.611 RootTuner.iOS[19386:887418] critical: 17 ??? 0x00000001351767f4 0x0 + 5185693684
2017-06-24 12:20:37.611 RootTuner.iOS[19386:887418] critical: 18 ??? 0x00000001357292f4 0x0 + 5191668468
2017-06-24 12:20:37.611 RootTuner.iOS[19386:887418] critical: 19 ??? 0x000000013572747c 0x0 + 5191660668
2017-06-24 12:20:37.612 RootTuner.iOS[19386:887418] critical: 20 RootTuner.iOS 0x000000010fe0c585 mono_jit_runtime_invoke + 1301
2017-06-24 12:20:37.612 RootTuner.iOS[19386:887418] critical: 21 RootTuner.iOS 0x000000010fec6b88 do_runtime_invoke + 88
2017-06-24 12:20:37.612 RootTuner.iOS[19386:887418] critical: 22 RootTuner.iOS 0x000000010ff0d41a start_wrapper + 538
2017-06-24 12:20:37.612 RootTuner.iOS[19386:887418] critical: 23 RootTuner.iOS 0x000000010ff91fed inner_start_thread + 189
2017-06-24 12:20:37.612 RootTuner.iOS[19386:887418] critical: 24 libsystem_pthread.dylib 0x000000011bc0daab _pthread_body + 180
2017-06-24 12:20:37.612 RootTuner.iOS[19386:887418] critical: 25 libsystem_pthread.dylib 0x000000011bc0d9f7 _pthread_body + 0
2017-06-24 12:20:37.612 RootTuner.iOS[19386:887418] critical: 26 libsystem_pthread.dylib 0x000000011bc0d1fd thread_start + 13
2017-06-24 12:20:37.613 RootTuner.iOS[19386:887418] critical:
=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================
private bool isAnimating = false;
private bool isAnimating = false;
private object myObject = new object();
private void RunAnimation()
{
if (isAnimating) return;
lock (myObject)
{
isAnimating = true;
try
{
//my animation
}
finally
{
isAnimating = false;
}
}
}
private bool isAnimating = false;
private object myObject = new object();
private void RunAnimation()
{
if (isAnimating) return;
lock (myObject)
{
isAnimating = true;
try
{
//my animation
}
catch (Exception)
{
//set opacity = 1, visible = true....
}
finally
{
isAnimating = false;
}
}
}