在.NET中,Invoke()有什么用途?

5

我找到了这段代码:

this.Invoke(new EventHandler(EventGetSum));

这与写成以下形式不同吗:

EventGetSum();

这有什么用途?

请查看此问题:https://dev59.com/33RB5IYBdhLWcg3wn4UL#571749 - alex2k8
这个标题真的不太好,也许你应该考虑将它改成更具描述性的内容。 - grapefrukt
3个回答

13
如果你编写EventGetSum(),它会立即调用EventGetSum方法。
如果你编写new EventHandler(EventGetSum),它会创建一个委托,当它被调用时,将依次调用EventGetSum。
调用Control.Invoke会从负责控件的UI线程中调用给定的委托。这是必须的,因为不应该从任意线程访问UI元素。

5

它在窗口this所属的线程中执行EventGetSum方法。


4

当涉及到跨线程UI调用时,通常会使用该方法。

请查看ISynchronizeInvoke的MSDN文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接