如何在操作集合上使用任务

本文关键字:任务 集合 操作 | 更新日期: 2023-09-27 17:49:38

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

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

现在,我想让所有的动作在任务中运行-但Action1(函数1)必须在Action2(函数2)之前运行在Action1完成之前,Action2不能启动。

怎么做?

谢谢

如何在操作集合上使用任务

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

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