在TPL C#中将多个长时间运行的任务作为事务运行

时间:2011-09-12 11:01:03

标签: c# .net-4.0 parallel-processing multitasking task-parallel-library

我有一个n个任务的列表,我想要并行地,异步地执行。

每个并行运行的任务都可以有一个或多个嵌套任务。

我还需要等待并分析每个任务的返回结果。 仅当所有任务成功执行(例如,它们返回“真”)时,整个操作才成功。

实际上,这是一项交易操作,我需要等待许多任务成功完成。

问题是每个任务可能需要1-3个小时才能完成(某些任务可能只需要几分钟,而其他任务则需要数小时) 整个操作可能需要一整天的时间。

我的问题:

  
      
  1. 使用任务并行库,这种方法是否可行且可行?
  2.   
  3. 还有什么   如果其中一个任务超时并且无法向其报告,则会发生   妈妈的任务?
  4.   
  5. 图书馆可以处理任务没有的情况   只有嵌套,但alos需要很长时间才能完成?
  6.   

修改 我发现this blog post关于取消任务,特别是长时间运行的任务。 也许对其他人也有用。

1 个答案:

答案 0 :(得分:2)

您在寻找Task.WaitAll吗?

如果任务实际超时(即故障),则会抛出AggregateException。请注意,WaitAll将等待所有任务在返回之前以某种方式完成,即使某些任务提前失败也是如此。

我没有理由相信TPL对需要很长时间的任务有任何问题。