Async / await是一个很好的语法糖

时间:2015-08-22 12:43:36

标签: c# .net async-await c#-5.0

我们可以说C#async / await模式是某种形式 (智能)糖语法?

因为据我所知,最后,它只是"只是"为程序员隐藏了(内部)工作线程的所有实现。

2 个答案:

答案 0 :(得分:6)

是的,await没有CLR支持。它在编译时消失了。你可以用await写的任何东西都可以在没有它的情况下写出来。

等待任务,这是一种调用ContinueWith:*

的奇特方式

反编译一个使用await的程序集,看看它是如何工作的。

答案 1 :(得分:1)

async/await确实是语法糖,然而,它不只是隐藏线程。仅仅因为在方法中使用asyncawait并不意味着您正在创建线程。

来自MSDN文章Live Transactions

  

async和await关键字不会导致其他线程   创建。异步方法不需要多线程,因为异步   方法不会在自己的线程上运行。该方法在当前运行   同步上下文并仅在线程上使用时间   方法是有效的。您可以使用Task.Run将CPU绑定的工作移动到   后台线程,但后台线程对进程没有帮助   那只是等待结果可用。