수색…


Async / Await의 기본 사용법

느린 프로세스를 병렬로 시작한 다음 완료되면 결과를 수집 할 수 있습니다.

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

2 초 후에 두 결과를 모두 사용할 수 있습니다.

LAP과 함께 TAP 사용

당신은 만들 수 IEnumerableTask 전달하여 AddressOf AsyncMethod LINQ에 Select 방법 다음 시작하고 모든 결과를 기다릴 Task.WhenAll

메서드에 이전 LINQ 체인 호출과 일치하는 매개 변수가 있으면 자동으로 매핑됩니다.

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

다른 인수를 매핑하려면 AddressOf Method 를 람다로 바꿀 수 있습니다.

Function(linqData As Integer) MyNonMatchingMethod(linqData, "Other parameter")


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow