c# async await 的使用

c# async await 的使用

一直没有搞懂这个最新的异步特性,今天研究了一下,记录一下成果。话不多说,先上代码
static void Main(string[] args)
        {
            Console.WriteLine("start");
            test();
            Console.WriteLine("Main end");
            Console.ReadKey();
        }

        private static async void test()
        {
            string reslut = await Task.Run<string>(() =>
            {
                Thread.Sleep(2000);
                return "async end";
            });
            Console.WriteLine(reslut);
        }

首先我们要明确一点,await 和 async必须和Task一起才能实现异步模式,准确的说await和async就是Task异步模式同步写法的俩个关键字。

使用这两个关键字实现异步,需要把异步代码放到同一个方法中,这个方法中的异步任务是异步执行的,这个时候如果使用了await关键字来修饰异步任务,那么要执行完string reslut = await Task.Run<string>(() => { Thread.Sleep(2000); return "async end"; });
这个之后,方法就会返回执行Main方法中的Console.WriteLine("Main end"); Console.ReadKey();,后面的Console.WriteLine(reslut);不会执行,等异步任务结束之后,才会执行Console.WriteLine(reslut);

 private static async void test()
        {
            string reslut = await Task.Run<string>(() =>
            {
                Thread.Sleep(2000);
                return "async end";
            });
      		Console.WriteLine(reslut);
        }

运行结果:
在这里插入图片描述

在这里插入图片描述
到这里大概对await 和 async这两个关键字的使用有了一点心得,异步任务是异步执行的方法体,await修饰的任务之后的代码是,异步任务执行完之后的回调方法,只不过写法上更简单而已,在一个方法里面就实现了子线程到ui主线程之间的切换,这个应该是编译器根据关键字实现的。好了,到这里就结束了,希望能帮到跟我一样不知道怎么使用await和async异步任务的人。

猜你喜欢

转载自blog.csdn.net/wf2397108372/article/details/85090514