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