using System.Threading.Tasks;
public static void Main()
public static Task WaitAnyTrue(params Task<bool>[] tasks)
var tcs = new TaskCompletionSource<bool>();
foreach (var t in tasks) {
t.ContinueWith(result => {
if (result.Status != TaskStatus.RanToCompletion)
tcs.TrySetException(result.Exception);