异步修饰符和等待运算符与委托和线程的不同之处是什么?

时间:2013-01-22 09:12:59

标签: c#

例如Winform中的场景,我们使用时会阻止UI线程 HttpWebRequest同步,然后在Internet上请求资源。在这里,我们可以使用异步方法来执行该方法,而针对特定任务的await关键字允许用户与winform交互,即使请求仍在运行。

这甚至可以通过委派来实现,那么Async Feature的优势是什么?

3 个答案:

答案 0 :(得分:0)

async和await termonoligy要简单得多,您只需添加一些关键字就可以像编写同步应用程序那样基本编写代码。

来自MSDN:

  

您可以避免性能瓶颈并提升整体性能   使用异步编程实现应用程序的响应能力。   但是,编写异步应用程序的传统技术   可能很复杂,使它们难以编写,调试和   维护。

     

Visual Studio 2012引入了一种简化的方法async   编程,利用.NET Framework中的异步支持   4.5和Windows运行时。编译器完成了开发人员过去所做的艰巨工作,并且您的应用程序保留了逻辑   类似于同步代码的结构。结果,你得到了所有   异步编程的优点有一小部分   努力。

http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx

答案 1 :(得分:0)

在我看来,最好的优点之一是用更少的代码行来理解异步编程模式的更简洁的方法。如果您想更清楚地了解它是如何工作的,请查看Jon Skeet回答的问题:How does Task<int> become a int?

答案 2 :(得分:0)

我认为“委托”意味着从后台线程调用同步方法。

正如其他人所指出的那样,代码使用asyncawait更容易阅读和写入,但也存在另一个重要区别。

使用同步方法时,调用线程将被阻塞,直到操作完成。

当您使用后台线程中的同步方法时,UI线程不会被阻止,但后台线程仍然是。

使用异步方法时,不会阻止任何线程。这样可以更有效地使用资源,同时减少线程池的压力。