Асинхронный способ вызова асинхронного метода и в ожидании другой метод (HTTP-клиента )
У меня есть некоторые проблемы с асинхронным методом.
public async void MakePost()
{
var cookieArray = GetCookies().Result;
(...)
}
async public Task<string[]> GetCookies()
{
(...)
var response = await httpClient.SendAsync(request);
string cookieTempSession = response.Headers.ToString();
(...)
return cookieArray;
}
Ничего не происходит после var response = await httpClient.SendAsync(request);
я ставлю точку останова в следующей строке string cookieTempSession = response.Headers.ToString();
, но она никогда не достигает ее. Я попытался "попробовать поймать", но тоже ничего не получилось. Когда я объединяю эти два метода в один, он работает идеально, но это не так красиво. Мне просто интересно, что там произошло.
1 ответ:
Поскольку первый метод -
async
, вместоResult
следует использоватьawait
:var cookieArray = await GetCookies();
Если вы не программируете переднюю часть, добавьте
ConfigureAwait(false)
(но почему?) на звонок, Вот так:var cookieArray = await GetCookies().ConfigureAwait(false); ... var response = await httpClient.SendAsync(request).ConfigureAwait(false);