不执行的Http PostAsync

时间:2018-07-04 16:06:58

标签: c# list asynchronous task

我正在做一个非常简单的项目,我正在尝试构建任务列表, 确切地说是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 :(得分:-1)

Task就是这样工作的;他们立即开始执行。如果要推迟执行任务,则可以考虑列出任务 creator 委托的列表:

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