在程序结构中频繁的创建线程有点麻烦,那么是不是可以一开始创建一个工作者线程,让它等待主线程的各种命令并执行不同的事情呢,结果是当然,在MFC程序中经常这么做,所以在VB程序中也想用相同的程序结构。
.net库提供了对应功能的类和函数,让我们不必在MFC中那样调用windows api,代码如下:
Imports System.Threading
Public Class Form1
Private m_Thread As Thread
Private m_Event As EventWaitHandle
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
m_Thread = New Thread(AddressOf ThreadRun)
m_Event = New EventWaitHandle(False, EventResetMode.AutoReset)
m_Thread.Start()
End Sub
'工作者线程执行函数
Private Sub ThreadRun()
While (True)
m_Event.WaitOne() '一直等待信号
'主线程触发一次操作
MsgBox("Hello")
m_Event.Reset() '复位,以便继续等待新命令
End While
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
m_Event.Set() '线线程发送一个信号
End Sub
End Class
测试如下
|
|