在 LINQ 中使用 TAP

你可以通過將 AddressOf AsyncMethod 傳遞給 LINQ Select 方法建立 IEnumerableIEnumerable ,然後使用 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")