【问题标题】:What is the difference between [Delegate].DynamicInvoke and [Delegate].Method.Invoke? [duplicate][Delegate].DynamicInvoke 和 [Delegate].Method.Invoke 有什么区别? [复制]
【发布时间】:2013-12-12 03:31:32
【问题描述】:

我已经写了一个方法来一次在各种控件中执行一个操作,这是VBNET中的Invoke部分:

If [Control].InvokeRequired Then
    [Control].Invoke(ControlAction, [Control])
Else
    ' ControlAction.DynamicInvoke([Control])
    ControlAction.Method.Invoke(ControlAction, {[Control]})
End If

但我真的不知道使用DynamicInvokeMethod.Invoke 有什么区别。

也许DynamicInvoke 是异步执行的……还是什么?

我已经阅读了这两种方法的描述,但我仍然感到困惑,我不清楚,我不知道“late-bound”是什么意思,是对于我(和谷歌翻译)来说,这是一个完全陌生的词,我的英语不好。

动态调用(后期绑定)当前所代表的方法 委托

我需要对这一切进行友好的解释。

另外,我希望能在 C#VBNET 中提供更多代码示例来展示差异。

【问题讨论】:

  • 这里有完整的解释,查看 Marc 的回答:stackoverflow.com/questions/12858340/…
  • @Selman22 非常感谢,如果您想写一些关于此的内容,我会将您的答案标记为已接受。
  • 我写了点东西,但我的英语不像你那么好:)
  • @Selman22 也许你有兴趣帮助我解决我的新问题:stackoverflow.com/questions/20535056/… 再次感谢!
  • 我希望能帮上忙,但我不懂 Visual Basic =) 我知道 C#..

标签: c# .net vb.net delegates invoke


【解决方案1】:

DynamicInvoke 不是异步执行的,它是动态的,因为您将参数传递给运行时中的函数检查(和拆箱)。Invoke 需要精确类型的参数,但 DynamicInvoke 需要一个包含您的参数的对象数组。因此,当您不知道参数的确切类型时,您可以使用 DynamicInvoke。

这里有完整的(更好的:)解释:Difference Between Invoke and DynamicInvoke

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多