[Delegate] .DynamicInvoke和[Delegate] .Method.Invoke有什么区别?

时间:2013-12-12 03:31:33

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

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

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

但我真的不知道我使用DynamicInvoke还是Method.Invoke会有什么不同。

也许DynamicInvoke异步执行......或者是什么?。

我已经介绍了这两种方法,但我仍然感到困惑,而且对我来说还不清楚,我不知道是什么意思" 迟到了 ",对于我(以及GoogleTranslator)来说,这是一个非常奇怪的词,我的英语不好。

  

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

我需要友好解释这一切。

此外,我还要感谢C#VBNET中的代码示例,以展示其中的差异。

1 个答案:

答案 0 :(得分:1)

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

以下是关于它的完整(和更好:)解释:Difference Between Invoke and DynamicInvoke