首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么是AsyncCallback?

为什么是AsyncCallback?
EN

Stack Overflow用户
提问于 2011-05-02 03:26:27
回答 2查看 275关注 0票数 1

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-02 04:20:55

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

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

票数 4
EN

Stack Overflow用户

发布于 2011-05-02 03:29:19

您可以选择根本不调用EndInvoke,而只依赖于回调。这样,初始化来自委托本身,而不是来自您,并且您不必决定何时完成调用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5850758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档