Visual Basic .NET Language
Patrón asíncrono basado en tareas
Buscar..
Uso básico de Async / Await
Puede iniciar un proceso lento en paralelo y luego recopilar los resultados cuando se realicen:
Public Sub Main()
Dim results = Task.WhenAll(SlowCalculation, AnotherSlowCalculation).Result
For Each result In results
Console.WriteLine(result)
Next
End Sub
Async Function SlowCalculation() As Task(Of Integer)
Await Task.Delay(2000)
Return 40
End Function
Async Function AnotherSlowCalculation() As Task(Of Integer)
Await Task.Delay(2000)
Return 60
End Function
Después de dos segundos ambos resultados estarán disponibles.
Usando TAP con LINQ
Puede crear un IEnumerable
de Task
pasando AddressOf AsyncMethod
al método LINQ Select
y luego iniciar y esperar todos los resultados con Task.WhenAll
Si su método tiene parámetros que coinciden con la llamada de la cadena LINQ anterior, se asignarán automáticamente.
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
Para asignar diferentes argumentos, puede reemplazar el AddressOf Method
con un lambda:
Function(linqData As Integer) MyNonMatchingMethod(linqData, "Other parameter")
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow