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