我有一個返回IEnumerable的類。然後我按順序執行這些任務。假設這個類是TaskProvider。使用TPL連續運行多個任務序列
public class TaskProvider {
public IEnumerable<Task> SomeThingsToDo() { return work; }
}
我執行這些有以下幾點:
public void ExecuteTasks(IEnumerable<Task> tasks)
{
var enumerator = tasks.GetEnumerator();
ExecuteNextTask(enumerator);
}
static void ExecuteNextTask(IEnumerator<Task> enumerator)
{
bool moveNextSucceeded = enumerator.MoveNext();
if (!moveNextSucceeded) return;
enumerator
.Current
.ContinueWith(x => ExecuteNextTask(enumerator));
}
現在我有一個情況我可能有TaskProvider的多個實例,每個生成的任務列表。我希望按順序執行每個任務列表,這意味着來自一個提供程序的所有任務在下一個任務開始之前完成。
然後,最重要的是,我需要知道所有任務何時完成。
完成此操作的TPL方式是什麼?
(FWIW,我使用的是異步CTP爲Silverlight)。
我也想知道如果我用我的ExecuteTask邏輯重新發明輪子。 – 2011-03-18 15:23:38