⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 module1.vb

📁 适合VB初学者看
💻 VB
字号:
Imports System.Threading
Module Module1

    Sub Main()
        Dim FirstThread As Thread
        Dim SecondThread As Thread
        '显示用法说明
        Console.WriteLine("主线程开始运行!")
        Console.WriteLine()
        Console.WriteLine()
        Console.WriteLine("按回车键开始创建线程并启动!")
        Console.ReadLine()
        Console.WriteLine("按 1 键并回车切换第1个线程的状态!")
        Console.WriteLine("按 2 键并回车切换第2个线程的状态!")
        Console.WriteLine("按 q 键并回车退出主线程循环,主线程将终止两个线程!")

        '创建并启动线程
        Try
            '创建第一个线程
            Console.WriteLine("创建并启动两个线程!")
            Console.WriteLine()
            Dim firstWork As New ThreadOneWork()
            FirstThread = New Thread(AddressOf firstWork.DoWork)
            '普通优先级
            FirstThread.Priority = ThreadPriority.Normal
            '创建第一个线程
            Dim secondWork As New ThreadTwoWork()
            SecondThread = New Thread(AddressOf secondWork.DoWork)
            '普通优先级
            FirstThread.Priority = ThreadPriority.Normal
            '启动线程
            FirstThread.Start()
            SecondThread.Start()
        Catch e As Exception
            Console.WriteLine(e.ToString())
        End Try
        While True
            Console.WriteLine("主线程运行!")
            '输入数据
            Dim ch As String
            ch = Console.ReadLine()
            '退出循环
            If ch = "q" Then
                Console.WriteLine("退出主线程循环,主线程终止两个线程!")
                Exit While
                '切换第一个线程状态
            ElseIf ch = "1" Then
                If Not FirstThread Is "" Then
                    '如果处于运行状态则挂起
                    If FirstThread.ThreadState = ThreadState.Running Then
                        Console.WriteLine("挂起第一个线程!")
                        FirstThread.Suspend()
                        '如果处于挂起状态则继续
                    ElseIf FirstThread.ThreadState = ThreadState.Suspended Then
                        Console.WriteLine("继续第一个线程!")
                        FirstThread.Resume()
                    End If
                End If
                '切换第二个线程状态
            ElseIf ch = "2" Then
                If Not SecondThread Is "" Then
                    '如果处于运行状态则挂起
                    If SecondThread.ThreadState = ThreadState.Running Then
                        Console.WriteLine("挂起第二个线程!")
                        SecondThread.Suspend()
                        '如果处于挂起状态则继续
                    ElseIf SecondThread.ThreadState = ThreadState.Suspended Then
                        Console.WriteLine("继续第二个线程!")
                        SecondThread.Resume()
                    End If
                End If
            End If
        End While
        Console.WriteLine("终止第一个线程...")
        '终止第1个线程
        If (Not FirstThread Is "") And FirstThread.IsAlive Then
            '必须处于IsAlive状态才有可能被Abort
            '如果线程当前处在Suspended状态下,则需要Resume该线程,然后才能Abort。
            If FirstThread.ThreadState = ThreadState.Suspended Then
                FirstThread.Resume()
            End If
            FirstThread.Abort()
            '让FirstThread和主线程连接起来,主线程将会一直等到FirstThread结束才继续执行代码
            '这样可防止主线程结束了而工作者线程没有结束的情况。
            FirstThread.Join()
        End If
        Console.WriteLine("终止第二个线程...")
        '终止第2个线程
        If (Not SecondThread Is "") And SecondThread.IsAlive Then
            If SecondThread.ThreadState = ThreadState.Suspended Then
                SecondThread.Resume()
            End If
            SecondThread.Abort()
            SecondThread.Join()
        End If
    End Sub


End Module

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -