我正在做一个非常简单的项目,我正在尝试构建任务列表, 确切地说是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));
将所有任务添加到列表后,我希望它们以串行方式执行。 我现在的问题是,当我将它们添加到列表中时,该任务已经被执行。 他们为什么已经在那里被处决?
答案 0 :(得分:-1)
Task
就是这样工作的;他们立即开始执行。如果要推迟执行任务,则可以考虑列出任务 creator 委托的列表:
var tasks = new List<Func<Task<HttpResponseMessage>>> {
() => PutAsyncJson("url", obj1),
() => PutAsyncJson("url", obj2)
};