29.3 Task类和Task<TResult>类
在讲解“任务并行库”时已经提到过Task类,它表示一个异步操作,用于执行并行操作,本节将进一步学习它。Task类还有一个泛型版本Task<TResult>,它派生自Task类,并且它们都位于System.Threading.Tasks命名空间中。与Task类不同的是,Task<TResult>类表示一个可以返回值的异步操作。其中,类型参数TResult是其所执行任务的返回类型。
图29-3是Task类和Task<TResult>类的类图。
图 29-3 Task类和Task<TResult>类
由上图可见,Task<TResult>类派生自Task类,Task类实现了IThreadPoolWorkItem、IAsyncResult、IDisposable接口,这3个接口的作用如下所示。
❑IThreadPoolWorkItem:负责从线程池队列执行工作项;
❑IAsyncResult:表示异步操作的状态;
❑IDisposable:主要用途是释放非托管资源。
其中的IAsyncResult接口在第25章的25.3节曾学习过,Task和AsyncResult一样,都实现了IAsyncResult接口。
在图29-3中,列出了Task类和Task<TResult>类的一些主要成员,包括方法和属性,其中带下划线的是静态成员,Task类的主要成员如表29-4所示。
Task<TResult>类的主要成员如表29-5所示。