Esperando a que una sola tarea falle de una Lista <Tarea <.. >> de manera más limpia, posiblemente con LINQ?

En mi solicitud tengo unList<Task<Boolean>> que yoTask.Wait[..] para determinar si se completaron con éxito (Result = true) Aunque si durante mi espera unTask completa y devuelve un valor de falsey Quiero cancelar todos los demásTask Estoy esperando y hago algo basado en esto.

He creado dos métodos "feos" para hacer esto

// Create a CancellationToken and List<Task<..>> to work with
CancellationToken myCToken = new CancellationToken();
List<Task<Boolean>> myTaskList = new List<Task<Boolean>>();

//-- Method 1 --
    // Wait for one of the Tasks to complete and get its result
Boolean finishedTaskResult = myTaskList[Task.WaitAny(myTaskList.ToArray(), myCToken)].Result;

    // Continue waiting for Tasks to complete until there are none left or one returns false
    while (myTaskList.Count > 0 && finishedTaskResult)
    {
        // Wait for the next Task to complete
        finishedTaskResult = myTaskList[Task.WaitAny(myTaskList.ToArray(), myCToken)].Result;
        if (!finishedTaskResult) break;
    }
    // Act on finishTaskResult here

// -- Method 2 -- 
    // Create a label to 
    WaitForOneCompletion:
    int completedTaskIndex = Task.WaitAny(myTaskList.ToArray(), myCToken);

    if (myTaskList[completedTaskIndex].Result)
    {
        myTaskList.RemoveAt(completedTaskIndex);
        goto WaitForOneCompletion;
    }
    else
        ;// One task has failed to completed, handle appropriately 

Me preguntaba si había una forma más limpia de hacer esto, posiblemente con LINQ.

Respuestas a la pregunta(3)

Su respuesta a la pregunta