using System.Threading.Tasks;
public static async Task Main()
private static async Task Example()
var tasks = new [] { DoLongThingAsyncEx1(), DoLongThingAsyncEx2() };
await Task.WhenAll(tasks);
var exceptions = tasks.Where(t => t.Exception != null)
.Select(t => t.Exception);
foreach (var exception in exceptions)
Console.WriteLine(exception.ToString());
private static Task DoLongThingAsyncEx1()
return Task.Run(() => { throw new InvalidTimeZoneException(); });
private static Task DoLongThingAsyncEx2()
return Task.Run(() => { throw new InvalidOperationException(); });