我了解到 AsyncCallback
函数将在委托(delegate)调用完成后执行所有后处理任务。我的问题是在 EndInvoke
之后/之下编写后处理任务有什么区别,因为 EndInvoke
将等待委托(delegate)调用返回。
最佳答案
使用委托(delegate)的 BeginInvoke() 方法的要点是目标将异步运行。如果您在 BeginInvoke() 之后立即调用 EndInvoke(),那么使用它就不再有任何意义。通过简单地直接调用委托(delegate),您将获得完全相同的行为,减去开销和线程问题。
该值在目标方法完成时获得回调,在它完成后立即异步。只有然后调用 EndInvoke(),它会立即完成。这会清理系统资源并在目标方法抛出异常时重新抛出异常。不要按照赞成答案中的建议跳过调用 EndInvoke(),您将泄漏资源至少 10 分钟。
关于c# - 为什么要异步回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5850758/