Beispiel #1
0
        /// <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();
                });
        }
Beispiel #2
0
        /// <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());
 }