在.NET中,一个Control是属于一个特定的线程的。如果要在另外一个线程中访问这个Control的Handler(其实,Control的很多属性都会访问到Control的Handler)。.NET 或 操作系统会抛出一个异常。
但是,某些时候我们必须这样使用。微软已经在.NET Framework中为我们包装好了方法,供我们使用:
public Object Control.Invoke ( Delegate method, params Object[] args )
|
和
Visual Basic (Declaration)
|
Public ReadOnly Property InvokeRequired As Boolean
|
Visual Basic (Usage)
|
Dim instance As Control Dim value As Boolean value = instance.InvokeRequired
|
public bool Control.InvokeRequired { get; }
|
通过InvokeRequired属性,我们可以判断特定的Control是否属于当前线程。如果该属性返回真,我们就必须使用Control.Invoke方法,将访问逻辑发送到Control所属的线程里运行。
powered by performancing firefox