Example #1
0
 internal ContinuationTaskFromPandaTask(IPandaTask <TResult> currentTask, Func <IPandaTask <TResult> > continuationTaskCallback, bool fromReject = false)
 {
     _combinedTask = ConstrcutCombinedTask(currentTask, continuationTaskCallback, fromReject);
     _combinedTask.Fail(Reject).Done(() =>
     {
         //this case then ignore catch after success of main task
         TResult result = _continuationTask != null ? _continuationTask.Result : currentTask.Result;
         base.SetValue(result);
     });
 }
        /// <summary>
        /// Return exception to stack. Must be in Unity thread!
        /// </summary>
        /// <param name="task">source task</param>
        /// <param name="ignoreCancel">ignore OperationCanceledException</param>
        public static void RethrowError(this IPandaTask task, bool ignoreCancel = false)
        {
            //throw
            task.Fail(x =>
            {
                //not throw if no task canceled exception mode.
                if (ignoreCancel && x is OperationCanceledException)
                {
                    return;
                }

                //throw to stack.
                task.ThrowIfError();
            });
        }
Example #3
0
 internal ContinuationTaskFromPandaTask(IPandaTask currentTask, Func <IPandaTask <TResult> > continuationTaskCallback, bool fromReject = false)
 {
     //construct non generic continuation task
     _combinedTask = ConstrcutCombinedTask(currentTask, continuationTaskCallback, fromReject);
     _combinedTask.Fail(Reject).Done(() => base.SetValue(_continuationTask.Result));
 }