C# 什么';异步委托和异步方法之间有什么不同?

C# 什么';异步委托和异步方法之间有什么不同?,c#,C#,异步委托和异步方法之间有什么不同 有人告诉我,他们在C#中不同,但我认为他们是一样的。有关差异以及进一步的讨论,请参阅此处的内容。首先请各位代表。声明一个时,编译器会自动为委托类型生成三个方法: 调用(…),使用与委托声明相同的参数 BeginInvoke(…,异步回调,对象),其中。。。是声明的参数 EndInvoke(IAsyncResult) Invoke()方法同步调用委托目标,就像普通调用一样。BeginInvoke()方法是异步调用,目标方法在线程池线程上运行。方法完成后需要调用

异步委托和异步方法之间有什么不同


有人告诉我,他们在C#中不同,但我认为他们是一样的。

有关差异以及进一步的讨论,请参阅此处的内容。

首先请各位代表。声明一个时,编译器会自动为委托类型生成三个方法:

  • 调用(…),使用与委托声明相同的参数
  • BeginInvoke(…,异步回调,对象),其中。。。是声明的参数
  • EndInvoke(IAsyncResult)
Invoke()方法同步调用委托目标,就像普通调用一样。BeginInvoke()方法是异步调用,目标方法在线程池线程上运行。方法完成后需要调用EndInvoke(),以释放分配给调用的资源,并重新引发可能已中止调用的任何异常

NET framework包含许多具有BeginXxxx()方法的类。MSDN库将它们称为异步操作,而不是异步方法。它们启动一个异步完成的操作

从.NET 4.5开始,在C#version 5的支持下,名称以Async结尾并返回任务的异步操作可以在wait表达式中调用。在具有async修饰符的方法中使用时。这大大简化了异步操作的处理,这在WinRT中非常重要,因为许多常见操作都是异步的。

在C#5(Visual Studio Dev11预览版)中,这一点不再适用。C#确实支持“异步”方法。