/// <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); }
public virtual void ExecuteOnMainThread(Action action) { if (UiSynchronizationContext != null) { UiSynchronizationContext.Post(o => action.DynamicInvoke(), null); } else { action.DynamicInvoke(); } }
public virtual void ExecuteOnMainThread(Delegate method, object parameter) { if (UiSynchronizationContext != null) { UiSynchronizationContext.Post(o => method.DynamicInvoke(o), parameter); } else { method.DynamicInvoke(parameter); } }
public virtual void ExecuteOnMainThread(Delegate method) { if (UiSynchronizationContext != null) { UiSynchronizationContext.Post(o => method.DynamicInvoke(), null); } else { method.DynamicInvoke(); } }
public virtual void ExecuteOnMainThread(Action <object> action, object parameter) { if (UiSynchronizationContext != null) { UiSynchronizationContext.Post(o => action.DynamicInvoke(o), parameter); } else { action.DynamicInvoke(parameter); } }