c# - 为什么要异步回调?

标签 c# delegates begininvoke

我了解到 AsyncCallback 函数将在委托(delegate)调用完成后执行所有后处理任务。我的问题是在 EndInvoke 之后/之下编写后处理任务有什么区别,因为 EndInvoke 将等待委托(delegate)调用返回。

最佳答案

使用委托(delegate)的 BeginInvoke() 方法的要点是目标将异步运行。如果您在 BeginInvoke() 之后立即调用 EndInvoke(),那么使用它就不再有任何意义。通过简单地直接调用委托(delegate),您将获得完全相同的行为,减去开销和线程问题。

该值在目标方法完成时获得回调,在它完成后立即异步。只有然后调用 EndInvoke(),它会立即完成。这会清理系统资源并在目标方法抛出异常时重新抛出异常。不要按照赞成答案中的建议跳过调用 EndInvoke(),您将泄漏资源至少 10 分钟。

关于c# - 为什么要异步回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5850758/

相关文章:

c# - 使用 delegate/BeginInvoke 在 C# 中将调用者与被调用者解耦

c# - 如何使用 C# 访问网络摄像头?

c# - 将现有表映射到 C# 中的域类

C#/WPF : Make a GridViewColumn Visible=false?

c# - 使用运行时已知的类型创建委托(delegate)

swift - 具有基类的协议(protocol)委托(delegate)概念

c# - 如何使用 .NET 拆分一个字符串并包含分隔符?

ios - 如何使用委托(delegate)/协议(protocol)在多个 View Controller 之间传递值

c# - 更好地检测同步操作的超时

c# - 如何在C#中访问UI线程