表示一个可以返回值的异步操作,public class Task<TResult> : System.Threading.Tasks.Task
-------------------------------------------------------------注解-------------------------------------------------------------
Task<TResult>类表示单个操作,该操作返回一个值并且通常以异步方式执行。 Task<TResult> 对象是在 .NET Framework 4 中首次引入的 基于任务的异步模式 的中心组件之一。 由于对象执行的工作 Task<TResult> 通常在线程池线程上异步执行,而不是在主应用程序线程上同步执行,因此可以使用 Status 属性以及 IsCanceled 、 IsCompleted 和 IsFaulted 属性来确定任务的状态。 通常,lambda 表达式用于指定任务要执行的工作。 Task<TResult> 可以通过多种方式创建实例。 从开始,最常见的方法 .NET Framework 4.5 是调用静态 Task.Run<TResult>(Func<TResult>) 或 Task.Run<TResult>(Func<TResult>, CancellationToken) 方法。 这些方法提供了一种简单的方法来通过使用默认值来启动任务,而无需获取其他参数。 下面的示例使用 Task.Run<TResult>(Func<TResult>) 方法来启动任务,该任务将循环,并显示循环迭代次数:
---------------------------------------------------------------------------------使用方法1------------------------------------------------------------
Task.Run<TResult>(Func<TResult>) ,应为有返回值,所以不能用Action委托,只能用Func<TResult>
using System; using System.Threading.Tasks; public class Example { public static void Main() { var t = Task<int>.Run( () => { // Just loop. int max = 1000000; int ctr = 0; for (ctr = 0; ctr <= max; ctr++) { if (ctr == max / 2 && DateTime.Now.Hour <= 12) { ctr++; break; } } return ctr; } ); Console.WriteLine("Finished {0:N0} iterations.", t.Result); } } // The example displays output like the following: // Finished 1,000,001 loop iterations.View Code
---------------------------------------------------------------------------------使用方法2------------------------------------------------------------
调用静态 TaskFactory.StartNew 或 TaskFactory<TResult>.StartNew 方法
using System; using System.Threading.Tasks; public class Example { public static void Main() { var t = Task<int>.Factory.StartNew( () => { // Just loop. int max = 1000000; int ctr = 0; for (ctr = 0; ctr <= max; ctr++) { if (ctr == max / 2 && DateTime.Now.Hour <= 12) { ctr++; break; } } return ctr; } ); Console.WriteLine("Finished {0:N0} iterations.", t.Result); } } // The example displays the following output: // Finished 1000001 loop iterationsView Code