using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; public class Program { public Program() { List<Task<String>> tasks = new List<Task<String>>(); tasks.Add(this.getNameAsync()); tasks.Add(this.getSurenameAsync()); tasks.Add(this.getAgeAsync()); try { Task.WaitAll(tasks.ToArray()); } catch (AggregateException) {} for (var ctr = 0 ; ctr < tasks.Count; ctr++) { if (tasks[ctr].Status == TaskStatus.Faulted) Console.WriteLine("{0} does not exist", tasks[ctr]); else Console.WriteLine("{0} in '{1}'", tasks[ctr].Result, tasks[ctr]); } //var name = this.getNameAsync(); //name.Wait(); //Console.WriteLine(name.Result); } public async Task<string> getNameAsync() { Thread.Sleep(1000); return "The name"; } public async Task<string> getSurenameAsync() { Thread.Sleep(2000); return "The surename"; } public async Task<string> getAgeAsync() { return await this.getRealAgeAsync(); } public async Task<string> getRealAgeAsync() { Thread.Sleep(3000); return "The age"; } public static void Main() { new Program(); Console.WriteLine("Hello World"); } }