[VB.NET Tips]線程傳遞參數四種方法


Thread線程啟動方法,一般來說要么是一個無參數的方法,要么是一個帶有object參數的方法並且在Start時傳遞參數的值。
但是我們可以利用一些技巧給方法傳遞不受限制的參數。這些方法又可以在實際使用過程相互融合。
方法簡單直接上代碼,供君參考。

Imports System.Threading
Module Module1

    Sub Main()

        '第一種:在Start中傳遞參數值,但方法中的參數類型需為object類型
        Dim t1 As New Thread(AddressOf CountNumber)
        t1.Start(10)

        '第二種:通過Lambda表達式創建線程,可以傳遞任意的參數
        Dim t2 As New Thread(Sub()
                                 PrintNumber(20)
                             End Sub)
        t2.Start()

        '第三種:通過實例化類來傳遞參數,然后調用類方法
        Dim c As New Count(10)
        Dim t3 As New Thread(AddressOf c.CountNumber)
        t3.Start()

        '第四種:通過傳遞類或結構,以達到向方法傳遞多個參數
        Dim p As New Person() With {
            .FirstName = "嚴",
            .LastName = "查散"
            }
        Dim t4 As New Thread(AddressOf ShowName)
        t4.Start(p)

        Console.Read()

    End Sub

    '傳遞單個參數
    Private Sub CountNumber(number As Object)

        Dim sum As Integer

        For i As Integer = 1 To Integer.Parse(number)

            sum += i

        Next

        Console.WriteLine(sum)

    End Sub

    '傳遞非object參數
    Private Sub PrintNumber(number As Integer)

        Console.WriteLine(number)

    End Sub

    '把方法包裝成類,在實例化時傳遞參數
    Class Count

        Dim number As Integer

        Sub New(number As Integer)

            Me.number = number

        End Sub

        Public Sub CountNumber()

            Dim sum As Integer

            For i As Integer = 1 To Integer.Parse(number)

                sum += i

            Next

            Console.WriteLine(sum)

        End Sub

    End Class

    '傳遞一個類或結構達到傳遞多個參數
    Private Sub ShowName(person As Object)

        Dim myPerson As Person = CType(person, Person)

        Console.WriteLine(myPerson.FirstName & myPerson.LastName)

    End Sub

    Class Person

        Public Property FirstName As String
        Public Property LastName As String

    End Class

End Module


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM