Example #1
0
        /// <summary>
        /// Invokes the specified action on the UI thread asynchronous.
        /// </summary>
        /// <param name="action">The action.</param>
        /// <returns></returns>
        /// <exception cref="System.ArgumentNullException">action</exception>
        public Task InvokeOnUiAsync(Action action)
        {
            if (action == null)
            {
                throw new ArgumentNullException("action");
            }

            var taskCompletionSource = new TaskCompletionSource <bool>();

            UiSynchronizationContext.Post((state) =>
            {
                try
                {
                    action();

                    taskCompletionSource.SetResult(true);
                }
                catch (Exception e)
                {
                    taskCompletionSource.SetException(e);
                }
            }, null);

            return(taskCompletionSource.Task);
        }
Example #2
0
 public virtual void ExecuteOnMainThread(Action action)
 {
     if (UiSynchronizationContext != null)
     {
         UiSynchronizationContext.Post(o => action.DynamicInvoke(), null);
     }
     else
     {
         action.DynamicInvoke();
     }
 }
Example #3
0
 public virtual void ExecuteOnMainThread(Delegate method, object parameter)
 {
     if (UiSynchronizationContext != null)
     {
         UiSynchronizationContext.Post(o => method.DynamicInvoke(o), parameter);
     }
     else
     {
         method.DynamicInvoke(parameter);
     }
 }
Example #4
0
 public virtual void ExecuteOnMainThread(Delegate method)
 {
     if (UiSynchronizationContext != null)
     {
         UiSynchronizationContext.Post(o => method.DynamicInvoke(), null);
     }
     else
     {
         method.DynamicInvoke();
     }
 }
Example #5
0
 public virtual void ExecuteOnMainThread(Action <object> action, object parameter)
 {
     if (UiSynchronizationContext != null)
     {
         UiSynchronizationContext.Post(o => action.DynamicInvoke(o), parameter);
     }
     else
     {
         action.DynamicInvoke(parameter);
     }
 }