[VB.NET]委托调用---invoke

    技术2022-05-20  44

    在VB6平台是没有多线程这一说的,而VB.NET有了这个概念,这样对于同步模块化操作是很方面的.

    可是同样也存在着问题.跨线程操作COM有时候会异常.

    托管程序~~~每一个线程都有上下文,主线程(或者说创建控件的线程)操作COM控件是没问题的.

    但是其他线程就不行了,可能会引发异常.

    但是有一个叫"托管调用"的函数---invoke,使得跨线程操作是安全的.

     

    比如说一个控件在FORM里,一个线程(非主线程)去操作这个控件,就需要invoke调用FORM的函数再去操作(自写函数),这样就安全了.

     

    MSDN上是这样写的,看的我迷迷糊糊

     

    ' The following code assumes a 'ListBox' and a 'Button' control are added to a form, ' containing a delegate which encapsulates a method that adds items to the listbox. Public Class MyThreadClass Private myFormControl1 As MyFormControl Public Sub New(myForm As MyFormControl) myFormControl1 = myForm End Sub 'New Public Sub Run() ' Execute the specified delegate on the thread that owns ' 'myFormControl1' control's underlying window handle. myFormControl1.Invoke(myFormControl1.myDelegate) End Sub 'Run End Class 'MyThreadClass


    最新回复(0)