Visual Basic .NET Language
Taakgebaseerd asynchroon patroon
Zoeken…
Basisgebruik van Async / Await
Je kunt een langzaam proces parallel starten en de resultaten verzamelen als ze klaar zijn:
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
Na twee seconden zijn beide resultaten beschikbaar.
TAP gebruiken met LINQ
U kunt een IEnumerable
of Task
door AddressOf AsyncMethod
te AddressOf AsyncMethod
aan de LINQ Select
methode en vervolgens alle resultaten te starten en te wachten met Task.WhenAll
Als uw methode parameters heeft die overeenkomen met de vorige LINQ- kettingoproep, worden deze automatisch toegewezen.
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
Om verschillende argumenten toe te AddressOf Method
kunt u de AddressOf Method
vervangen door een lambda:
Function(linqData As Integer) MyNonMatchingMethod(linqData, "Other parameter")
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow