using System.Threading.Tasks;
public static void Main()
var tPass1 = Task.FromResult(1);
var tFail1 = Task.FromException<int>(new ArgumentException("fail1"));
var tFail2 = Task.FromException<int>(new ArgumentException("fail2"));
var all = new Task<int>[] { tPass1, tFail1, tFail2 }.Where(t => t.Status == TaskStatus.RanToCompletion);
var task = Task.WhenAll(all);