2016-12-30 4 views
0

DLL에서 HttpClient 하위 사용. 하지만 호출하는 앱은 HttpClient가 돌아온 것으로 True 또는 False를 반환하려고합니다. 비동기 호출 이전 함수 비동기 전의 함수

그래서 나는 분명히 비동기 호출에 대한 호출 후 If 문이 MktResp가 설정되기 직전에 실행되도록

Public Function SendBasket() As Integer 
    Try 
     SendMarketBasket() 

     If MktResp = "Loaded" Then 
      Return 0 
     ElseIf MktResp = "Nothing to Load" Then 
      Return -1 
     End If 
    Catch ex As Exception 
     Return -1 
    End Try 
End Function 

Private Async Sub SendMarketBasket()........ 

같은 간단한 호출 응용 프로그램을 작성했습니다. 비동기 호출이 완료된 후에 만 ​​함수 결과를 반환하려면 어떻게해야합니까? Task을 반환

TIA 해리는

+0

아니다 '완료 - 그들은 불을 잊고 잊어 버린다. 'Private Async Function SendMarketBasket() As Task'로 변경하고'SendMarketBasket(). Wait()'를 사용하면 교착 상태에 빠질 수 있습니다. [이] (http://stackoverflow.com/questions/9343594/how-to-call-asynchronous-method-from-synchronous-method-in-c)에는 좋은 정보가 있으며 아마도 다른 것들이있을 것입니다. – Mark

답변

2
SendMarketBasket 방법을 변경

.
는 그런 다음 작업이 완료 얻을은 "기다리고 있습니다"와

Private Async Function SendMarketBasketAsync() As Task 
    ' your code 
End Function 

그런 다음 당신이 너무에서 비동기하기 SendBasket 방법의 서명을 변경해야합니다 반환 된 결과에 따라 실행 귀하의 코드를 계속할 수 있습니다. 당신이 비동기 방법에 Async 접미사를 추가하는 경우

Public Async Function SendBasketAsync() As Task(Of Integer) 
    Await SendMarketBasketAsync() 

    If MktResp = "Loaded" Then 
     Return 0 
    ElseIf MktResp = "Nothing to Load" Then 
     Return -1 
    End If 
End Function 

그것은 당신과 당신의 동료 시간을 절약 할 수 있습니다. 당신이 어딘가에는 응용 프로그램의 모든 걸쳐 것이다 그것을 사용하기 시작하면

Async

이 좀비처럼 -이 나쁜 일이 : 나는 때`비동기 서브 말할 수있는 방법이라고 생각하지 않습니다