class Program
{
public static void Main(string[] args)
{
string[] urls = new string[]{
"http://wwww.baidu.coms",
"http://wwww.baidu.coms",
"http://wwww.baidu.coms",
"http://wwww.baidu.coms"
};
List<Task<string>> alltask = new List<Task<string>>();
//任务中没有被处理的异常会被包含在任务中返回;
alltask = urls.Select(async x=>{
HttpClient http = new HttpClient();
return await http.GetStringAsync(x);
}).ToList();
Task<string[]> ttt = null;
try {
(ttt = Task.WhenAll(alltask)).Wait();
} catch{
foreach(var t in ttt.Exception.Flatten().InnerExceptions){ //通过聚合异常来记录并行任务抛出的异常
Console.WriteLine("taskId is {0}, taskExceptionMessage is {1};", ttt.Id, t.Message);
}
foreach (var tt in alltask) {
Console.WriteLine(tt.Exception.InnerException.Message);
}
}
Console.ReadKey(true);
}
}