Разница между этими двумя асинхронными функциями - PullRequest
0 голосов
/ 22 мая 2018

Здравствуйте, я не понимаю разницу между следующими двумя функциями asnyc, кто-то может мне это объяснить?Оба они не возвращают IRestResponse, поэтому я не могу получить доступ к полю StatusCode.Должен ли я сыграть здесь?

public async Task<IRestResponse> Post<T>(string Ressource, T ObjTOPost) where T : new()
{
    return await Task.Factory.StartNew(() =>
    {
        var client = new RestClient("test.com");
        var request = new RestRequest(Ressource, Method.POST);

        var response = client.Execute(request);

        return response;
    });
}

И это:

public async Task<IRestResponse> Post<T>(string Ressource, T ObjTOPost) where T : new()
{
    var client = new RestClient("test.com");

    var request = new RestRequest(Ressource, Method.POST);

    var response = await client.ExecuteTaskAsync<T>(request);

    return response;
}

1 Ответ

0 голосов
/ 22 мая 2018

Оба они не возвращают IRestResponse, поэтому я не могу получить доступ к полю StatusCode.

Они возвращают Task<IRestResponse>.Вы можете получить интерфейс, ожидая задания, например,

var task = Post(resource, objectToPost);
IRestResponse response = await task;

Или в одной строке (более распространенная):

var response = await Post(resource, objectToPost);

Разница между этими двумя асинхронными функциями

Второй пример гораздо проще.Первый пример раскручивает дополнительную задачу и передает ожидающую ее обратно вызывающей стороне, тогда как второй пример ожидает RestClient напрямую.Я не вижу смысла использовать структуру в первом примере.

...