2

例如 Winform 中的一个场景,当我们 HttpWebRequest同步使用时 UI 线程将被阻塞,这反过来又请求 Internet 上的资源。在这里,我们可以使用 async 方法执行该方法,而某些任务的 await 关键字允许用户与 winform 交互,即使请求仍在运行。

这甚至可以通过委托来实现,那么异步功能的优势是什么?

4

3 回答 3

0

我假设“委托”是指从后台线程调用同步方法。

正如其他人所指出的,使用asyncand更容易阅读和编写代码await,但还有另一个重要区别。

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

当您从后台线程使用同步方法时,UI 线程不会被阻塞,但后台线程仍然会阻塞。

当您使用异步方法时,不会阻塞任何线程。这允许更有效地使用您的资源,对线程池的压力更小。

于 2013-01-22T13:22:13.623 回答
0

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

来自 MSDN:

通过使用异步编程,您可以避免性能瓶颈并提高应用程序的整体响应能力。然而,编写异步应用程序的传统技术可能很复杂,使得它们难以编写、调试和维护。

Visual Studio 2012 引入了一种简化的方法,即异步编程,它利用 .NET Framework 4.5 和 Windows 运行时中的异步支持。编译器完成了开发人员过去常做的艰巨工作,并且您的应用程序保留了类似于同步代码的逻辑结构。因此,您只需付出很少的努力即可获得异步编程的所有优势。

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

于 2013-01-22T09:16:26.073 回答
0

在我看来,最大的优势之一是用更少的代码行更简洁地理解异步编程模式。如果您想更清楚地了解它是如何工作的,请查看 Jon Skeet 回答的这个问题:Task<int> 如何成为 int?

于 2013-01-22T09:17:18.977 回答