List Task 回傳記錄
Imports System.Threading
Module Module1
Sub Main()
Dim action As Func(Of Integer, Integer, Integer, ret) = AddressOf Run
Dim tasks = New List(Of Task(Of ret))()
For i As Integer = 0 To 2
tasks.Add(Task.Factory.StartNew(Function()
Dim taskId = Thread.CurrentThread.ManagedThreadId
Console.WriteLine(String.Format("Task{0}_Start: {1:yyyy/mm/dd hh:mm:ss.fff}", taskId, Now))
Dim result = action.Invoke(taskId, i, 3000)
Console.WriteLine(String.Format("Task{0}_End: {1:yyyy/mm/dd hh:mm:ss.fff} ", taskId, Now))
Return result
End Function))
Next
'等待 所有task結束
Task.WaitAll(tasks.ToArray())
tasks.ForEach(Sub(t)
Console.WriteLine(String.Format("Task Result Data:{0}", t.Result.Val))
End Sub)
Console.WriteLine("Done")
Console.ReadLine()
End Sub
Function Run(taskId As Integer, ct As Integer, wait As Integer) As ret
Dim result = New ret(taskId * ct)
Console.WriteLine(String.Format("Method{0}_Start: {1:yyyy/mm/dd hh:mm:ss.fff} Data:{2}", taskId, Now, result.Val))
Thread.Sleep(wait)
Console.WriteLine(String.Format("Method{0}_End: {1:yyyy/mm/dd hh:mm:ss.fff} Data:{2}", taskId, Now, result.Val))
Return result
End Function
End Module
Public Class ret
Public Sub New(v As Integer)
Me.Val = v
End Sub
Public Property Val As Integer
End Class