【发布时间】:2011-03-19 02:52:29
【问题描述】:
我有一个返回 IEnumerable 的类。然后我按顺序执行这些任务。假设类是 TaskProvider。
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,我正在为 Silverlight 使用异步 CTP。)
【问题讨论】:
-
我也想知道我是否正在用我的 ExecuteTask 逻辑重新发明轮子。
标签: silverlight asynchronous task-parallel-library