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