在 LINQ 中使用 TAP
你可以通過將 AddressOf AsyncMethod
傳遞給 LINQ Select
方法建立 IEnumerable
的 IEnumerable
,然後使用 Task.WhenAll
啟動並等待所有結果
如果你的方法具有與先前 LINQ 鏈呼叫匹配的引數,則它們將自動對映。
Public Sub Main()
Dim tasks = Enumerable.Range(0, 100).Select(AddressOf TurnSlowlyIntegerIntoString)
Dim resultingStrings = Task.WhenAll(tasks).Result
For Each value In resultingStrings
Console.WriteLine(value)
Next
End Sub
Async Function TurnSlowlyIntegerIntoString(input As Integer) As Task(Of String)
Await Task.Delay(2000)
Return input.ToString()
End Function
要對映不同的引數,你可以用 lambda 替換 AddressOf Method
:
Function(linqData As Integer) MyNonMatchingMethod(linqData, "Other parameter")