await的调用的等待期间,.NET会把当前的线程返回给线程池,等异步方法调用执行完毕后,框架会从线程池再取出来一个线程执行后续的代码
优化逻辑:避免线程切换
异步方法不等于多线程
异步方法的代码并不会自动在新线程中执行,除非把代码放到新线程中执行
Async方法缺点:
1.异步方法会生成一个类运行效率没有普通方法高
2.可能会占用非常多的线程
返回值为Task的不一定都要标注Async,标注Async只是让我们可以更方便的await而已
如果一个异步方法只是对别的异步方法调用的转发,并没有太多复杂的逻辑,那么久可以去掉Async关键字