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