VB.NET线程学习

来源:互联网 发布:办公协作软件 编辑:程序博客网 时间:2024/05/01 13:23
Imports System.ThreadingPublic Class Form1    ''''''''''''''''''''''''''''''''''''''''''''''    '' 下面的代码是使用多线程同时弹出4个msgbox''''    ''''''''''''''''''''''''''''''''''''''''''''''    ''''''''''定义'''''    Structure MyParameters        Dim nNum As Integer    End Structure    Public paramPM(3) As MyParameters    ''' <summary>    ''' 线程池共用事件    ''' </summary>    ''' <param name="paramPM"></param>    ''' <returns></returns>    ''' <remarks></remarks>    Public Function sPM2(ByVal paramPM As MyParameters) As String        MessageBox.Show("Hello" + paramPM.nNum.ToString)        Return ""    End Function    ''' <summary>    ''' 按钮单击事件    ''' </summary>    ''' <param name="sender"></param>    ''' <param name="e"></param>    ''' <remarks></remarks>    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf sPM2), paramPM(0))        ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf sPM2), paramPM(1))        ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf sPM2), paramPM(2))        ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf sPM2), paramPM(3))    End Sub    ''' <summary>    ''' 窗口登陆事件    ''' </summary>    ''' <param name="sender"></param>    ''' <param name="e"></param>    ''' <remarks></remarks>    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        initpm() ' 初始化paramPM(3)    End Sub    ''' <summary>    ''' 初始化    ''' </summary>    ''' <remarks></remarks>    Private Sub initpm()        paramPM(0).nNum = 0        paramPM(1).nNum = 1        paramPM(2).nNum = 2        paramPM(3).nNum = 3    End SubEnd Class


上面的代码是通过点击一个按钮,同时弹出四个对话框

 

 

Imports System.ThreadingPublic Class Form1    '' 计算平方    Function Square(ByVal Value As Double)        Return Value * Value    End Function    '' 将方法封装到类中    Public Class SqueareClass        Public Value As Double        Public Square As Double        'Public Sub CalcSquare(ByVal Value As Integer)        Public Sub CalcSquare()            Square = Value * Value        End Sub    End Class    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        Dim oSquare As New SqueareClass()        Dim t As Thread        t = New Thread(AddressOf oSquare.CalcSquare)        oSquare.Value = 30        t.Start()        If t.Join(500) Then            MsgBox(oSquare.Square)        End If    End SubEnd Class


上面的代码是通过将线程执行函数封装到类中,并通过join同步线程,获取方法的执行结果