'测试方法
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
=================
要是测试或者很简单的程序直接一个
1
2
3
|
Private
Sub
Form1_Load(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
MyBase
.Load
Control.CheckForIllegalCrossThreadCalls =
False
'允许多线程调用控件
End
Sub
|
搞定,省得那么麻烦,不过还是推荐使用委托,毕竟是标准方法,安全一些