【c#】关于异步、await 的解析

什么是异步

异步:可以理解为电路中的并行操作,即在同一时刻,可以处理多个任务的操作称之为异步,但是注意,在执行异步时,是一个主线程和多个子线程,异步的操作就是主线程安排子线程去执行。

什么场景使用异步?

1、当有UI主线程时,执行子任务,必须要在子线程上,用主线程会报错; 2、当一个方法中,对同一个或者多个数据库操作,用异步操作
3、一个方法中,有多个耗时任务用异步; 注意:一个方法中只有一个操作数据库或者一个耗时长的任务 还是不用异步;

异步的作用?

优点:合理运用异步,可以减少耗时,并且提高程序效率;
缺点:会有一定的切换线程的损耗,子线程过多导致阻塞会使得程序卡顿

await的作用?

定义:顾名思义就是等待任务的完成

什么场景用await?

使用场景:当开启了子线程 你需要对它返回的结果进行操作,且开启子线程后还执行了一些主线程的后,去await 子线程.
例如:var task=db.query<table>().tolistAsync();
for(int i=0;i<10;i++)
{
}
var result=await task();
这种写法就是同时执行了子线程和主线程,减少了损耗
  
 但是如果是  
  var task=await db.query<table>().tolistAsync(); 
for(int i=0;i<10;i++)
{
}
直接使用await就还是等待子线程执行完,再执行主线程操作,就没有异步的效果,等同于一个线程执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值