Invoke是在UI线程上执行委托(阻塞),BeginInvoke是在UI所在线程上异步执行指定委托(立即返回)。一般对于跨线程调用UI线程上的控件默认是非法的,所以需要调用
Invoke、
BeginInvoke、
EndInvoke 和
CreateGraphics。
多线程一般是创建新的Thread,然后执行相应的工作。如果不需要对窗体和控件进行操作则不必使用Invoke
Invokerequired是确定当前是否需要调用Invoke时需要调用的方法。MSDN上对此的解释是:
Windows 窗体中的控件被绑定到特定的线程,不具备线程安全性。因此,如果从另一个线程调用控件的方法,那么必须使用控件的一个 Invoke 方法来将调用封送到适当的线程。该属性可用于确定是否必须调用 Invoke 方法,当不知道什么线程拥有控件时这很有用。
~~~~~ 向着三颗奖牌出发!^o^ ~~~~~
~~~~~ 如果我的回复对您有所帮助,请您点击一下此回复右上角的“投票认定帖子内容有帮助” ~~~~~