异步方法:
public void Main(){
await Asynctask1;
DoSomething();
}
public async Task AsyncTask1(){
//Async logic here
}
同步方式:
public void Main(){
SyncMethod1();
DoSomething();
}
我想我在这里错过了一些东西。假设SyncMethod1()
并且Asynctask1()
两者都做相同的事情,这两个构造最后DoSomething()
是否不是相同的结果,也就是说,直到之前的方法完成才开始?
也就是说,DoSomething()直到方法完成才开始?
异步和顺序之间有区别。当您始终总是await
立即使用异步方法时,最终会得到异步顺序代码,乍一看,它的行为似乎与同步顺序代码类似。(顺便说一句,这个相似点是async
/await
关键字的全部要点)。但是,有一个重要的区别。
假设操作是一些I / O事情,例如获取HTTP资源。SyncMethod1
将使HTTP同步获取;也就是说,它发出HTTP请求,然后阻塞线程,直到获得HTTP响应为止。AsyncTask1
将使HTTP异步获取;也就是说,它发出HTTP请求,然后返回incomplete Task
。稍后,当HTTP请求进入时,该AsyncTask1
方法将恢复并完成return的运行Task
,并await
运行之后的代码(即DoSomething
)。
异步方式更为复杂,但具有一个关键优势:它不会阻塞线程。因此,释放了UI线程以启用响应式UI,释放了ASP.NET线程来处理其他请求。
我的博客上有一个async
介绍,可能对您有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句