c# – 为什么我们需要EndInvoke()来返回委托中异步调用的值?
发布时间:2020-12-15 18:16:31 所属栏目:百科 来源:网络整理
导读:我有点麻烦理解,当异步调用方法时,委托中的BeginInvoke()方法调用,在完成它的任务后为什么不能从BeginInvoke()本身返回方法的返回值,为什么我们需要EndInvoke()查询BeginInvoke()并从中返回返回值. 我知道这可能不是一个好的查询,但我的困惑是真实的:-) 另外
我有点麻烦理解,当异步调用方法时,委托中的BeginInvoke()方法调用,在完成它的任务后为什么不能从BeginInvoke()本身返回方法的返回值,为什么我们需要EndInvoke()查询BeginInvoke()并从中返回返回值.
我知道这可能不是一个好的查询,但我的困惑是真实的:-) 另外:我可以使用DelagateName.BeginInvoke(参数)异步调用一个方法,现在当委托中的匹配方法(假设它返回一个值)完成它的工作并返回一个值,为什么我需要DelegateName.EndInvoke()来获取返回值?为什么第一个调用本身不能在方法完成时返回值. 解决方法
当BeginInvoke返回时,该方法还没有完成 – 这就是异步的全部意义.因此,BeginInvoke只能在某个时刻为您提供表示结果“承诺”的标记 – 并且您使用该承诺使用EndInvoke获取实际结果,通常在回调中.
在.NET 4中,当然使用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- SQLite Can't open — Meteor create app
- org.xml.sax.SAXParseException: Content is not allowed i
- c# – 依赖注入循环依赖.net核心2.0
- Stonebraker教授的文章:Thoughts on the VLDB conference
- 在Notepad++中结合使用正则表达式及标记,可以事半功倍
- ruby-on-rails – 使用gagejs和rails更新SVG
- 如何以自动化方式接受Xcode许可?
- 把数据从MySQL迁到Oracle的几点注意事项
- 使用Molehill渲染3D模型
- C++反汇编第一讲,不同作用域下的构造和析构的识别