【发布时间】:2020-11-14 01:30:52
【问题描述】:
我正在尝试使用 httpclient 实现异步 api 调用。我已经使用带有我的密钥对值的字典进行调用,以将其写回数据库,从而将其绑定回正确的源记录。
我不知道如何将调用与原始更新请求相关联。
这是工作的重点:
var s_urlList = xmltogo.AsEnumerable().ToDictionary<DataRow, int, string>(row => Convert.ToInt32(row.Field<string>(0)), row => row.Field<string>(1));
IEnumerable<Task<string>> downloadTasksQuery =
from url in s_urlList.Values
select CallAPI(url);
List<Task<string>> downloadTasks = downloadTasksQuery.ToList();
while (downloadTasks.Any())
{
Task<string> finishedTask = await Task.WhenAny(downloadTasks);
downloadTasks.Remove(finishedTask);
string XMLResult = finishedTask.Result.ToString();
}
任何帮助表示赞赏。
【问题讨论】:
-
为什么不直接使用
await Task.WhenAll(downloadTasksQuery);,然后遍历每个任务来检查结果。 -
我想在每次通话完成后进行工作。将会有数百个。仍然如何将 s-urlList.Key 与完成的任务联系起来?。
标签: c# async-await httpclient