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

运行结果:

 

posted @ 2021-01-04 11:01  温故纳新  阅读(1884)  评论(0编辑  收藏  举报