文章
博客 网店

 VB.NET线程同步 -工作者线程等待主线程的实现



   在程序结构中频繁的创建线程有点麻烦,那么是不是可以一开始创建一个工作者线程,让它等待主线程的各种命令并执行不同的事情呢,结果是当然,在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


测试如下




芯艺工作室    蒙ICP备06005492号
Copyright© 2004-2023 ChipArt Studio All Rights Reserved