/// <summary> /// 作为后台线程 /// </summary> /// <param name="p_task"></param> /// <returns></returns> public static Task <T> AsBackground <T>(this UnityTask <T> p_task) { return(p_task.ContinueToBackground(t => { if (t.IsFaulted) { return Task.FromException <T>(t.Exception); } else { return Task.FromResult(t.Result); } }).Unwrap()); }
/// <summary> /// 作为后台线程 /// </summary> /// <param name="task">前台线程</param> /// <returns></returns> public static Task <T> AsBackground <T>(this UnityTask <T> task) { return(task.ContinueToBackground(p => p.IsFaulted ? Task.FromException <T>(p.Exception) : Task.FromResult(p.Result)).Unwrap()); }
/// <summary> /// 作为后台线程 /// </summary> /// <param name="task">前台线程</param> /// <returns></returns> public static Task AsBackground(this UnityTask task) { return(task.ContinueToBackground(p => p.IsFaulted ? Task.FromException(p.Exception) : Task.FromResult(0)) .Unwrap()); }
/// <summary> /// 创建一个在目标 <see cref="T:UnityEngine.TaskExtension.UnityTask`1" /> 成功执行时异步执行的<see cref="T:System.Threading.Tasks.Task`1" />延续任务。 /// </summary> /// <param name="task">目标<see cref="T:UnityEngine.TaskExtension.UnityTask`1" /></param> /// <param name="continuation"> /// 在 <see cref="T:UnityEngine.TaskExtension.UnityTask`1" /> 完成时要运行的操作。 /// 在运行时,委托将作为一个参数传递给完成的任务。 /// </param> /// <returns> /// 一个新的延续 <see cref="T:System.Threading.Tasks.Task" />。 /// </returns> /// <exception cref="T:System.ArgumentNullException"> /// <paramref name="continuation" /> 参数为 <see langword="null" />。 /// </exception> public static Task <TResult> ContinueToBackground <TIn, TResult>(this UnityTask <TIn> task, Func <UnityTask <TIn>, TResult> continuation) { return(task.ContinueToBackground(continuation, CancellationToken.None)); }
/// <summary> /// 创建一个在目标 <see cref="T:UnityEngine.TaskExtension.UnityTask`1" /> 成功执行时异步执行的<see cref="T:System.Threading.Tasks.Task" />延续任务。 /// </summary> /// <param name="task">目标<see cref="T:UnityEngine.TaskExtension.UnityTask`1" /></param> /// <param name="continuation"> /// 在 <see cref="T:UnityEngine.TaskExtension.UnityTask`1" /> 完成时要运行的操作。 /// 在运行时,委托将作为一个参数传递给完成的任务。 /// </param> /// <returns> /// 一个新的延续 <see cref="T:System.Threading.Tasks.Task" />。 /// </returns> /// <exception cref="T:System.ArgumentNullException"> /// <paramref name="continuation" /> 参数为 <see langword="null" />。 /// </exception> public static Task ContinueToBackground <T>(this UnityTask <T> task, Action <UnityTask <T> > continuation) { return(task.ContinueToBackground(continuation, CancellationToken.None)); }
/// <summary> /// switch to backgroud processor, thread pool /// </summary> /// <typeparam name="TResult"></typeparam> /// <param name="p_task"></param> /// <param name="p_continuation"></param> /// <returns></returns> public static Task ContinueToBackground(this UnityTask p_task, Action <UnityTask> p_continuation) { return(p_task.ContinueToBackground(p_continuation, CancellationToken.None)); }