Visual Basic .NET Language
Modèle asynchrone basé sur des tâches
Recherche…
Utilisation basique d'Async / Await
Vous pouvez démarrer un processus lent en parallèle, puis collecter les résultats une fois terminés:
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
Après deux secondes, les résultats seront disponibles.
Utiliser TAP avec LINQ
Vous pouvez créer un IEnumerable
de Task
en transmettant AddressOf AsyncMethod
à la méthode LINQ Select
, puis démarrez et attendez tous les résultats avec Task.WhenAll
Si votre méthode a des paramètres correspondant à l’appel LINQ précédent, ils seront automatiquement mappés.
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
Pour mapper différents arguments, vous pouvez remplacer la AddressOf Method
par un lambda:
Function(linqData As Integer) MyNonMatchingMethod(linqData, "Other parameter")
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow