private protected void RunOnUIThread(Action action)
        {
#if XAMARIN_FORMS
            global::Xamarin.Forms.Device.BeginInvokeOnMainThread(action);
#else
            if (_owner == null)
            {
                action();
                return;
            }
#if __IOS__
            _owner.InvokeOnMainThread(action);
#elif __ANDROID__
            _owner.PostDelayed(action, 50);
#elif NETFX_CORE
            _ = _owner.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Low, () => action());
#else
            _owner.Dispatcher.Invoke(action);
#endif
#endif
        }