异步委托(delegate)和异步方法有什么区别?
有人告诉我它们在 C# 中是不同的,但我认为它们是同一回事。
最佳答案
首先代表。当您声明一个时,编译器会自动为委托(delegate)类型生成三个方法:
- Invoke(...),采用与委托(delegate)声明相同的参数
- BeginInvoke(..., AsyncCallback, object) 其中...是声明的参数
- 结束调用(IAsyncResult)
Invoke() 方法同步调用委托(delegate)目标,就像普通调用一样。 BeginInvoke() 方法是异步 调用,目标方法在线程池线程上运行。方法完成后需要 EndInvoke() 调用以释放为调用分配的资源并重新引发可能已中止调用的任何异常。
.NET 框架包含许多具有 BeginXxxx() 方法的类。 MSDN 库将它们称为异步操作,而不是异步方法。他们开始一个异步完成的操作。
从 .NET 4.5 开始,C# version 5 支持,名称以 Async 结尾并返回 Task 的异步操作可以在 await 表达式中调用。在具有 async 修饰符的方法中使用时。这极大地简化了异步操作的处理,这在 WinRT 中很重要,因为许多常见操作都是异步的。
关于c# - 异步委托(delegate)和异步方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2864300/