HTTP PostAsync без выполнения - PullRequest
0 голосов
/ 04 июля 2018

я работаю над довольно простым проектом, я пытаюсь создать список задач, а точнее список задач HttpPost.

У меня есть следующий метод для публикации данных:

 public Task<HttpResponseMessage> PutAsyncJson<T>(string uri, T o)
 {
    return this.PutAsync<T>(uri, o, new JsonMediaTypeFormatter() { SerializerSettings = JsonSettings });
 }

где PutAsync - базовый метод .NET HttpClient

Теперь я просто помещаю задачи в список, поэтому я использую следующий код:

List<Task<HttpResponseMessage>> tasks = new List<Task<HttpResponseMessage>>();
List.Add(PutAsyncJson("url", obj1));
List.Add(PutAsyncJson("url", obj2));

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

1 Ответ

0 голосов
/ 04 июля 2018

Так работает Task; они начинают исполняться немедленно. Если вы хотите отложить выполнение задач, вы можете рассмотреть возможность составления списка делегатов задачи creator :

var tasks = new List<Func<Task<HttpResponseMessage>>> {
    () => PutAsyncJson("url", obj1),
    () => PutAsyncJson("url", obj2)
};
...