C# Task与Task<T>
Task<T>:任务返回结果类型为T的Task,Task<T>继承Task,Task<T>有Result属性,Result类型为T,而Task无Result属性
Task<T>类似于C#内置的两个委托:有返回值的Func,如Func<T1,T2,T3>代表参数值类型为T1和T2返回值类型为T3的委托和无返回值的委托Action,如Action<T1,T2,T3>代表参数类型为T1、T2和T3的委托
示例代码:
public static void Main(string [] args) { var temp=Test(); Console.Read(); } public async static Task Test() { var task1 = TaskTTest("task1"); var task2 = AsyncTest("asyncTask"); string task1_res = task1.Result; // Task<string>返回string结果 string task2_res = await AsyncTest("task2"); Console.WriteLine($"task1_res:{task1_res}, task2_res:{task2_res}"); } public static Task<string> TaskTTest(string taskName) { return Task.Run(() => TaskMethod(taskName)); } public async static Task<string> AsyncTest(string taskName) { await Task.CompletedTask; return TaskMethod(taskName); }
运行结果: