C#中异步编程的理解

1.异步相对的概念 同步

同步方法例子

class Program
{
    static void Main(string[] args)
    {
        Test1();
        Console.WriteLine("方法间隔-----");
        Test2();
        Console.ReadLine();
    }
    void Test1()
    {
        Console.WriteLine("Test1开始");
    }
    void Test2()
    {
        Console.WriteLine("Test2开始");
    }
}

以上代码为普通输出的同步方法,输出的顺序是:


Test1开始
Console.WriteLine("方法间隔-----------");
Test2开始

异步方法例子

class Program
{
    static void Main(string[] args)
    {
        Test1();
        Console.WriteLine("方法间隔-----");
        await Test2();
        Console.ReadLine();
    }
    void async Test1()
    {
        Console.WriteLine("Task1开始");
        await Task.Run(() => 
        { 
            Thread.Sleep(2000);
            
        });
        Console.WriteLine("Task1结束");
    }
    void async Test2()
    {
        Console.WriteLine("Task2开始");
         await Task.Run(() => 
        { 
            Thread.Sleep(2000);
            
        });
        Console.WriteLine("Task2结束");

    }
}

 以上的改变点 如下图:主要表现为async和await两个关键字,这就是 异步方法标志

首先解释一下async    async是为await的服务的   async提示编译器方法中可能存在await关键字,实际上不需要过分关注,当你方法内出现await的时候 方法没有出现async关键字,vs会有相应提示补全的。所以,让我们主要关注这个await关键字。await的意思:线程按照顺序执行await处立即返回上一层方法,await后续的部分必须等 await提示的方法执行完后才能继续;await只能出现在返回值为 Task的方法调用处;

这里还要我们知道一些前置的知识:

a、一个方法调用另一方法的本质,本质上可以认为所有的代码写在一个方法里 

同步方法的例子如下

异步方法的例子如下   我想用流程示意图来表示

总结:方法内出现await,是提示该方法调用者,执行到await处开启新线程(不需要程序员写出开启新线程的方法,编译器在编译的时候会完成相应的代码),然后马上跳出该方法,继续执行。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值