c# - 异步委托(delegate)和异步方法有什么区别?

标签 c#

异步委托(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/

相关文章:

c# - 一个简单的 C# 项目中每个文件的功能是什么?

c# - 收获选择的插件无法显示 ASP.NET MVC 下拉列表的验证消息

c# - 使用 netMsmqBinding 与 IIS 托管绑定(bind)时,WCF 服务托管失败

c# - 未定义表达式参数

c# - 困惑。 SmoothingMode.AntiAlias 和 SmoothingMode.HighQuality 之间的区别

c# - HttpListenerRequest 未返回客户端证书

c# - WCF 自定义行为的依赖注入(inject)

c# - 记录可能为空参数时 Log.Information 和 Log.Logger.Information 之间的 Serilog 差异

c# - MVC Html 扩展返回字符串而不是 html 标记?

c# - 从下拉列表中检索选定的枚举