Visual Basic .NET Language
Uppgiftsbaserat asynkronmönster
Sök…
Grundläggande användning av Async / Await
Du kan starta en långsam process parallellt och sedan samla in resultaten när de är klara:
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
Efter två sekunder kommer båda resultaten att finnas tillgängliga.
Använda TAP med LINQ
Du kan skapa en IEnumerable
of Task
genom att AddressOf AsyncMethod
till LINQ Select
metoden och sedan starta och vänta på alla resultat med Task.WhenAll
Om din metod har parametrar som matchar föregående LINQ- kedjesamtal kommer de automatiskt att kartläggas.
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
För att kartlägga olika argument kan du ersätta AddressOf Method
med en lambda:
Function(linqData As Integer) MyNonMatchingMethod(linqData, "Other parameter")
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow