Visual Basic .NET Language
Aufgabenbasiertes asynchrones Muster
Suche…
Grundlegende Verwendung von Async / Await
Sie können einen langsamen Prozess parallel starten und anschließend die Ergebnisse sammeln:
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
Nach zwei Sekunden sind beide Ergebnisse verfügbar.
TAP mit LINQ verwenden
Sie können ein IEnumerable
von Task
erstellen, indem Sie AddressOf AsyncMethod
an die LINQ Select
Methode übergeben und dann alle Ergebnisse mit Task.WhenAll
starten und warten
Wenn Ihre Methode über Parameter verfügt, die mit dem vorherigen LINQ- Kettenaufruf übereinstimmen, werden diese automatisch zugeordnet.
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
Um verschiedene Argumente AddressOf Method
können Sie AddressOf Method
durch ein Lambda ersetzen:
Function(linqData As Integer) MyNonMatchingMethod(linqData, "Other parameter")
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow