Visual Basic .NET Language
Wzorzec asynchroniczny oparty na zadaniach
Szukaj…
Podstawowe użycie Async / Await
Możesz rozpocząć powolny proces równolegle, a następnie zebrać wyniki po ich zakończeniu:
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
Po dwóch sekundach oba wyniki będą dostępne.
Używanie TAP z LINQ
Możesz utworzyć IEnumerable
Task
, przekazując AddressOf AsyncMethod
do metody LINQ Select
, a następnie uruchom i poczekaj na wszystkie wyniki z Task.WhenAll
Jeśli metoda ma parametry pasujące do poprzedniego wywołania łańcuchowego LINQ , zostaną one automatycznie zmapowane.
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
Aby zmapować różne argumenty, możesz zastąpić AddressOf Method
lambda:
Function(linqData As Integer) MyNonMatchingMethod(linqData, "Other parameter")
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow