vb.net 通过线程来控制界面的方法

   '测试方法
     Public  Sub  TestThread()
         '创建一个线程
         Dim  th  As  New  Thread( AddressOf  MyThreadProc)
         '启动线程
         th.Start()
     End  Sub
 
     Public  Sub  MyThreadProc()
         '更新ui资源例子
         Me .Invoke( New  VoidDelegate( AddressOf  UpdateText))
     End  Sub
     '定义委托
     Public  Delegate  Sub  VoidDelegate()
     '定义方法
     Public  Sub  UpdateText()
         '实际更新界面
         Me .Text =  "Modified by thread"
     End  Sub


=================

我写个更新label的,自己写的,可能拼写有误。
Delegate Sub setlabeltextcallback(ByVal l As Label, ByVal s As String)
    Private Sub setlabeltext(ByVal l As Label, ByVal s As String)
        If l.InvokeRequired Then
            Dim d As New setlabeltextcallback(AddressOf setlabeltext)
            l.Invoke(d, New Object() {l, s})
        Else
            l.Text = s
        End If
    End Sub

=================
要是测试或者很简单的程序直接一个
Visual Basic code
?
1
2
3
  Private  Sub  Form1_Load( ByVal  sender  As  System. Object ByVal  As  System.EventArgs)  Handles  MyBase .Load
         Control.CheckForIllegalCrossThreadCalls =  False  '允许多线程调用控件
     End  Sub

搞定,省得那么麻烦,不过还是推荐使用委托,毕竟是标准方法,安全一些

你可能感兴趣的:(vb.net 通过线程来控制界面的方法)