16,721
社区成员




'声明委托
Delegate Sub DelegateThreadTask()
'局部变量:
Private thread_DisplayControl As Thread, delegate_DisplayControl As DelegateThreadTask
'开始按钮
Private Sub btnBegin_Click(sender As Object, e As EventArgs) Handles btnBegin.Click
thread_DisplayControl = New Thread(AddressOf ThreadDisplayControl) '实例一下线程
thread_DisplayControl.Start() '线程开始
End Sub
'终止按钮
Private Sub btnAbort_Click(sender As Object, e As EventArgs) Handles btnAbort.Click
thread_DisplayControl.Abort() '线程终止
End Sub
'线程
Private Sub ThreadDisplayControl()
Debug.WriteLine("线程里调用委托")
delegate_DisplayControl = New DelegateThreadTask(AddressOf SubDisplayControl)
Invoke(delegate_DisplayControl)
Debug.WriteLine("委托结束啦!")
End Sub
'委托调用
Private Sub SubDisplayControl()
Do
'每隔1秒钟,循环更新Form1上的Label信息
lblControl.Text = Now
Delay(1000) '延时函数
Loop
End Sub
Public Sub TestThread()
Dim testStr As String, testInt As Integer, testObj As Object
Dim NeedStop As Boolean = False
Do Until NeedStop
'上面定义的 testStr\testInt\testObj 进行赋值等操作
Loop
'清理工作是这样做的吗?
testStr = Nothing : testInt = Nothing : testObj = Nothing
End Sub
我突然灵光一闪,想到一个方案,不知道可行否。。Dim NeedStop As Boolean = False
把循环和等待放到线程里进行,每次循环体检查线程是否需要终止,如果是,停止循环,做清理工作后退出
Do Until NeedStop
Invoke(Sub()
lblText.Text = ""
End Sub)
Delay(1000)
Loop
'其他清理工作