Асинхронный способ вызова асинхронного метода и в ожидании другой метод (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   2  

1 ответ:

Поскольку первый метод - async, вместо Result следует использовать await:

var cookieArray = await GetCookies();

Если вы не программируете переднюю часть, добавьте ConfigureAwait(false) (но почему?) на звонок, Вот так:

var cookieArray = await GetCookies().ConfigureAwait(false);
...
var response = await httpClient.SendAsync(request).ConfigureAwait(false);