TPLには、タスクがどのような状況で実行されるかを制御する値の数がTaskContinuationOptions
になっています。たとえば、TaskContinuationOptions.NotOnCanceled
は、その親が取り消されたときにタスクが実行されないようにします。なぜTPLは状態フィルタリングされたマルチタスク継続をサポートしていませんか?
ただし、これらのタスク状態フィルタは、マルチタスク継続には適用されません。あなたのような何かを行うことはできません。
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);
あなたが言うエラーになってしまう、"It is invalid to exclude specific continuation kinds for continuations off of multiple tasks."
この条件がAPIから除外される理由である私は理解していない
。すべての前件が特定の状態で終了したときにのみタスクを実行させることが、完全に有効なユースケースではないのはなぜですか?