El TPL tiene un número de valores TaskContinuationOptions
que controlan en qué circunstancias se ejecuta una tarea. Por ejemplo, TaskContinuationOptions.NotOnCanceled
impide que una tarea se ejecute cuando se cancela su padre.¿Por qué el TPL no admite las continuidades multitarea filtradas por el estado?
Sin embargo, ninguno de estos filtros de estado de la tarea se aplica a las continuaciones de tareas múltiples. No se puede hacer algo como:
TaskFactory f = new TaskFactory();
Task t1 = new Task (() => Thread.Sleep (5000));
Task t2 = new Task (() => Thread.Sleep (4000));
Task t3 = f.ContinueWhenAll (new Task[] { t1, t2 },
(tasks) => { ... },
TaskContinuationOptions.OnlyOnRanToCompletion);
se llega a un error que dice, "It is invalid to exclude specific continuation kinds for continuations off of multiple tasks."
Lo que no entiendo es por qué esta condición sería excluido de la API. ¿Por qué no sería un caso de uso perfectamente válido querer que una tarea se ejecute solo cuando todos los antecedentes terminaron en un estado particular?