Control.Invoke实际上是在做什么?

时间:2019-04-14 14:37:09

标签: c# winforms

我假设互斥体在执行传递的函数时被锁定,但不是很确定。另一个问题是,假设label1form1的成员。我的实验表明,使用form1label1来更新Text的{​​{1}}属性的调用都可以。但是有什么区别?

2 个答案:

答案 0 :(得分:1)

Control.Invoke()方法将对传递的方法的调用发送到控件的线程消息循环,并在调用完成后(在调用该方法并将上下文切换回您的线程之后)返回。

Control.BeginInvoke()方法只是将调用发布到控件的线程消息队列中,并立即继续(不要等到所传递的方法执行完毕)。

您可以使用两种方法从后台线程更新UI。

使用哪种控件(或窗体)调用Invoke或BeginInvoke都没有关系。

答案 1 :(得分:0)

不同的问题,但是此答案将帮助您了解线程控制。调用。

Thread Control.Invoke