我假设互斥体在执行传递的函数时被锁定,但不是很确定。另一个问题是,假设label1
是form1
的成员。我的实验表明,使用form1
或label1
来更新Text
的{{1}}属性的调用都可以。但是有什么区别?
答案 0 :(得分:1)
Control.Invoke()方法将对传递的方法的调用发送到控件的线程消息循环,并在调用完成后(在调用该方法并将上下文切换回您的线程之后)返回。
Control.BeginInvoke()方法只是将调用发布到控件的线程消息队列中,并立即继续(不要等到所传递的方法执行完毕)。
您可以使用两种方法从后台线程更新UI。
使用哪种控件(或窗体)调用Invoke或BeginInvoke都没有关系。
答案 1 :(得分:0)
不同的问题,但是此答案将帮助您了解线程控制。调用。