如何使用Action on Action集合?

时间:2012-12-28 01:22:04

标签: c# task-parallel-library

我有一些Action系列。 集合中的每个动作都必须在运行之前等待他之前的动作 例如......

   List<Action> actionCollection = new List<Action>()
   {
          func1,
          func2,
          func3
   };

现在,我想让所有动作在Task中运行 - 但是Action1(func 1)必须在Action2(func 2)中运行 在Action1完成之前,Action2无法启动。

怎么做?

谢谢

1 个答案:

答案 0 :(得分:2)

public Task ExecuteConsecutivelyAsync(IEnumerable<Action> actions) {
    return Task.Factory.StartNew(delegate {
        foreach (var action in actions) {
            action();
        }
    });
}

您可能需要/需要调用接受TaskScheduler的StartNew重载并传入TaskScheduler.FromCurrentSynchronizationContext()以保持任务在您的UI线程上运行。如上所述,它将倾向于在线程池上运行。