Информация об изменениях

Сообщение Re: Аццкий ад и асинхронная асинхронность от 12.11.2016 8:57

Изменено 30.11.2016 9:57 Sinix

Здравствуйте, Artem Korneev, Вы писали:

AK>Хочется всё это переписать к более понятному виду.


Использовать await в каждом методе по цепочке вызовов абсолютно необязательно.

public async Task InvokeHttpCall(Func<HttpClient, Task<HttpResponseMessage>> callback)
{
    using (var httpClient = new HttpClient())
    {
        HttpResponseMessage response = null;
        var http = httpClient;

        await this.retryPolicy.ExecuteAndCaptureAsync(() => 
                callback.Invoke(http).ContinueWith(t => response = t.Result));
    }
}


А если бы товарищ автор Polly читал бы гадлайны, то код выглядел бы как
        response = await this.retryPolicy.ExecuteAndCaptureAsync(() => callback.Invoke(http)).Result;

я бы на вашем месте завёл бы issue на это дело.
Re: Аццкий ад и асинхронная асинхронность
Здравствуйте, Artem Korneev, Вы писали:

AK>Хочется всё это переписать к более понятному виду.


Использовать await в каждом методе по цепочке вызовов абсолютно необязательно.

public async Task InvokeHttpCall(Func<HttpClient, Task<HttpResponseMessage>> callback)
{
    using (var httpClient = new HttpClient())
    {
        HttpResponseMessage response = null;
        var http = httpClient;

        await this.retryPolicy.ExecuteAndCaptureAsync(() => 
                callback.Invoke(http).ContinueWith(t => response = t.Result));
    }
}


А если бы товарищ автор Polly читал бы гадлайны, то код выглядел бы как
        response = (await this.retryPolicy.ExecuteAndCaptureAsync(() => callback.Invoke(http))).Result;

я бы на вашем месте завёл бы issue на это дело.