0

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

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

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

怎么做 ?

谢谢

4

1 回答 1

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

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

于 2012-12-28T01:27:12.767 回答