2016-12-30 2 views
0

Использование подкаталога HttpClient в DLL. Но вызывающее приложение хочет получить True или False в качестве возврата, с которым работал HttpClient.Функция для вызова функции «Асинхронная подстройка» Перед использованием Async

Так что я пытался написать простое приложение, вызывающее как так

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()........ 

Очевидно, что оператор Если после вызова к вызову асинхронного проходит непосредственно перед MktResp установлен. Как вернуть результат функции только после завершения вызова Async?

ТИА Гарри

+0

Я не думаю, что есть какой-нибудь способ, чтобы сказать, когда 'Async Sub 'завершает - они стреляют и забывают. Вы можете изменить его на '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 вернуть Task.
Тогда вы можете «ждать» для задачи получить завершена, и продолжить выполнение кода на основе возвращенного результата

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

Тогда вам необходимо изменить подпись SendBasket метода асинхронным тоже.

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 суффикс асинхронных методов это сэкономит ваше и ваших коллег время.

Async, как зомби, если вы начнете использовать его где-то он будет распространяться через все ваши приложения - это не плохо :)

Смежные вопросы