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

Day*_*One 6 c#

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

有人告诉我他们在C#中有所不同,但我认为他们是一回事.

Han*_*ant 6

代表们先.声明一个时,编译器会自动为委托类型生成三种方法:

  • 调用(...),使用与委托声明相同的参数
  • BeginInvoke(...,AsyncCallback,object)其中......是声明的参数
  • EndInvoke会(IAsyncResult的)

Invoke()方法同步调用委托目标,就像普通调用一样.BeginInvoke()方法是异步调用,目标方法在线程池线程上运行.方法完成后,需要EndInvoke()调用以释放为调用分配的资源,并重新引发可能已中止调用的任何异常.

.NET框架包含许多具有BeginXxxx()方法的类.MSDN Library将它们称为异步操作,而不是异步方法.它们启动异步完成的操作.

从.NET 4.5开始并受C#版本5支持,可以在await表达式中调用名称以Async结尾并返回Task的异步操作.在具有async修饰符的方法中使用时.这极大地简化了异步操作的处理,这在WinRT中很重要,其中许多常见操作是异步的.

  • 这在C#5(Visual Studio Dev11预览版)中已不再适用.C#确实支持"异步"方法. (5认同)