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(); }); }
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)); }