【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就还是等待子线程执行完,再执行主线程操作,就没有异步的效果,等同于一个线程执行。

猜你喜欢

转载自blog.csdn.net/KJJfighting/article/details/131391524