/// <summary> /// </summary> /// <param name="task"></param> /// <param name="runOnMainThread"></param> public AsyncTask(Action<IPromise> task, bool runOnMainThread = false, bool cancelable = false) { if (task == null) throw new ArgumentNullException("task"); result = new AsyncResult(!runOnMainThread && cancelable); if (runOnMainThread) action = WrapAction(() => { Executors.RunOnMainThread(() => task(result), true); result.Synchronized().WaitForResult(); }); else action = WrapAction(() => { task(result); result.Synchronized().WaitForResult(); }); }
/// <summary> /// run on main thread /// </summary> /// <param name="task"></param> public AsyncTask(IEnumerator task, bool cancelable = false) { if (task == null) throw new ArgumentNullException("task"); result = new AsyncResult(cancelable); action = WrapAction(() => { Executors.RunOnCoroutine(task, result); result.Synchronized().WaitForResult(); }); }
public virtual ISynchronizable Synchronized() { return(result.Synchronized()); }