【发布时间】:2012-08-03 04:53:48
【问题描述】:
异步委托和异步方法有什么区别?
有人告诉我它们在 C# 中是不同的,但我认为它们是一样的。
【问题讨论】:
标签: c#
异步委托和异步方法有什么区别?
有人告诉我它们在 C# 中是不同的,但我认为它们是一样的。
【问题讨论】:
标签: c#
代表优先。当你声明一个时,编译器会自动为委托类型生成三个方法:
Invoke() 方法同步调用委托目标,就像普通调用一样。 BeginInvoke() 方法是异步 调用,目标方法在线程池线程上运行。在方法完成后需要调用 EndInvoke() 来释放为调用分配的资源并重新引发任何可能中止调用的异常。
.NET 框架包含许多具有 BeginXxxx() 方法的类。 MSDN 库将它们称为异步操作,而不是异步方法。它们启动一个异步完成的操作。
从 .NET 4.5 开始并受 C# 版本 5 支持,名称以 Async 结尾并返回 Task 的异步操作可以在 await 表达式中调用。在具有 async 修饰符的方法中使用时。这极大地简化了异步操作的处理,这在许多常见操作都是异步的 WinRT 中很重要。
【讨论】:
有关差异以及一些进一步的讨论,请参阅 SO 上的Asynchronous methods and asynchronous delegates。
【讨论】: