我需要向多个服务器发送请求,并尝试使用任务异步运行每个连接。我有一个配置为连接的功能:
internal static Task<EventRecordEx> GetEventRecordFromServer(string server, string activityID)
我尝试了以下但它同步运行...
var taskList = new List<Task<EventRecordEx>>();
foreach (string server in server_list)
{
taskList.Add(GetEventRecordFromServer(server, id));
}
await Task.Factory.ContinueWhenAll(taskList.ToArray(), completedTasks =>
{
foreach (var task in completedTasks)
{
// do something with the results
}
});
我究竟做错了什么?
根据我的理解,当你使用.ContinueWhenAll时,当其中一个任务失败因为它将返回一个AggregateException时,你将很难调试异常,我建议单独运行任务,然后使用.ConfigureAwait(false)来确保它在nun UI线程中运行,如下所示:
foreach(Task task in taskList.ToArray()){
await task.ConfigureAwait(false);
// Do something.
}