异步委托和异步方法之间有什么不同?
有人告诉我他们在C#方面有所不同,但我认为他们是同一回事。
答案 0 :(得分:6)
先代表。声明一个时,编译器会自动为委托类型生成三种方法:
Invoke()方法同步调用委托目标,就像普通调用一样。 BeginInvoke()方法是异步调用,目标方法在线程池线程上运行。方法完成后,需要EndInvoke()调用以释放为调用分配的资源,并重新引发可能已中止调用的任何异常。
.NET框架包含许多具有BeginXxxx()方法的类。 MSDN Library将它们称为异步操作,而不是异步方法。它们启动异步完成的操作。
从.NET 4.5开始并受C#版本5支持,名称以Async结尾并返回Task的异步操作可以在 await 表达式中调用。在具有 async 修饰符的方法中使用时。这极大地简化了异步操作的处理,这在WinRT中很重要,其中许多常见操作是异步的。
答案 1 :(得分:0)
对于差异以及进一步的讨论,请参阅此处的Asynchronous methods and asynchronous delegates。