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

本文介绍如何在VB.NET程序中创建一个工作者线程,使其等待主线程的命令并执行相应任务。通过示例代码展示了如何利用`System.Threading`命名空间中的`Thread`和`EventWaitHandle`实现线程间的同步与通信,简化多线程编程。
摘要由CSDN通过智能技术生成

工作者线程等待主线程的实现

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

测试如下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值