我需要向多个服务器发送请求,并尝试使用任务异步运行每个连接。我有一个配置为进行连接的功能:
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
}
});
我在做什么错了?
答案 0 :(得分:0)
据我了解,当您使用.ContinueWhenAll时,如果其中一个任务失败,您将很难调试异常,因为它将返回AggregateException,我建议单独运行该任务,然后使用.ConfigureAwait( false)以确保其在修女UI线程中运行,如下所示:
foreach(Task task in taskList.ToArray()){
await task.ConfigureAwait(false);
// Do something.
}