private static void StopAnimationLoop()
        {
#if __ANDROID__
            if (Android.OS.Looper.MainLooper.IsCurrentThread)
            {
                timeAnimator?.Cancel();
            }
            else
            {
                using (var h = new Android.OS.Handler(Android.OS.Looper.MainLooper))
                {
                    h.Post(() => timeAnimator?.Cancel());
                }
            }
#elif __IOS__
            _displayLink?.Invalidate();
            _displayLink = null;
#elif NETFX_CORE
            if (Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.HasThreadAccess)
            {
                CompositionTarget.Rendering -= CompositionTargetRendering;
            }
            else
            {
                var _ = Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => CompositionTarget.Rendering -= CompositionTargetRendering);
            }
#else
            if (System.Windows.Application.Current.Dispatcher.CheckAccess())
            {
                CompositionTarget.Rendering -= CompositionTargetRendering;
            }
            else
            {
                System.Windows.Application.Current.Dispatcher.Invoke(() => CompositionTarget.Rendering -= CompositionTargetRendering);
            }
#endif
        }