Task.Factory.ContinueWhenAll()'u birkaç kez şimdi, yalnızca tüm öncüller herhangi bir hata veya iptal olmaksızın tamamlanıncaya kadar devam etmek amacıyla kullanmaya çalıştım. Bunu yapmak,A ve B sonra görev C ile devam etmek için tek bir TPL yöntemi kullanılarak hata veya iptal olmadan tamamlanmak mümkün mü?
Birden görevlerin kapalı devamından için spesifik devam türlü dışlamak için geçersiz, mesajla atılmasına bir ArgumentOutOfRangeException neden olur. Parametre adı: continuationOptions
Örneğin
, kod
var first = Task.Factory.StartNew<MyResult>(
DoSomething,
firstInfo,
tokenSource.Token);
var second = Task.Factory.StartNew<MyResult>(
DoSomethingElse,
mystate,
tokenSource.Token);
var third = Task.Factory.ContinueWhenAll(
new[] { first, second },
DoSomethingNowThatFirstAndSecondAreDone,
tokenSource.Token,
TaskContinuationOptions.OnlyOnRanToCompletion, // not allowed!
TaskScheduler.FromCurrentSynchronizationContext());
TPL için kabul edilebilir değildir. Başka bir TPL yöntemini kullanarak böyle bir şey yapmanın bir yolu var mı?