在 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")