【发布时间】:2014-03-14 02:03:47
【问题描述】:
我看到了几篇关于此的帖子...但大多数人是手动创建任务而不是从 API 接收它。
我有这个代码
Task[] tasks = new Task[companyCount];
// start all threads
for(int i = 0; i < companyCount; i++) {
string input = GetNextCompanyRecord(i);
string token = GetUserToken();
HttpClient client = GetHttpClient();
StringContent content = CreateStringContent(input);
var x = client.PostAsync(companyUrlString, content).ConfigureAwait(continueOnCapturedContext: false);
tasks[i] = x;
}
Task.WaitAll(tasks);
目标是我在 for 循环中为每条记录启动任务,然后在所有任务启动时...执行单个 waitall。
问题是我无法将 x 变量分配给任务数组。
PostAsync 方法没有向我返回任务。相反,它返回 ConfiguredTaskAwaitable。但我希望我能得到 Task 并且能够将它添加到我的数组中,然后等待。
【问题讨论】:
-
去掉不必要的
.ConfigureAwait(continueOnCapturedContext: false),你就是金子了。