【发布时间】:2015-03-16 12:49:56
【问题描述】:
在过去的几年中,我使用异步编程模型和套接字开发了客户端/服务器软件。 MSDN 上的这个 example 尽管与 ManualResetEvents 等同步机制过于复杂,但说明了这些概念:您使用 BeginXXX() 和 EndXXX() 方法对进行连接和流操作。
这样做的好处是让线程池根据需要(例如,当接收到数据时)分配线程,而不是为每个连接分配一个专用线程,这无法扩展。
最近有人提到,这种方法也可以使用 .NET 4.5 中引入的 async/await 模型来实现,因此在这种情况下使用 Tasks 并使 APM 变得不必要。这是怎么做到的?
【问题讨论】:
-
这是怎么做的你问的是async-await的实现细节吗?
-
我在问如何使用 TAP 而不是 APM 来解决相同的问题(即实现异步网络编程)。
-
恐怕不行;答案太笼统了,并没有解决我所问的网络编程的具体问题。也许您可以将其添加到您的答案中,在这种情况下就可以了。
-
您应该更具体地说明您所指的网络编程。
-
如果您能说明我的问题不清楚的地方,我会很乐意相应地安排。
标签: c# asynchronous network-programming client-server async-await