如何重新启动/重用重复任务?

时间:2012-02-27 13:57:48

标签: .net .net-4.0 task-parallel-library

我使用任务并行库实现了一个长期运行的任务。当Task启动时,我抓取几个输入值和集合的快照,然后使用该信息执行各种操作。如果在任务运行时这些值或集合中的任何一个发生了变化,我希望在完成后立即再次运行任务。我应该创建一个新任务还是有办法重用现有的任务?开始第二次迭代的最佳方法是什么?

3 个答案:

答案 0 :(得分:11)

创建新任务。

正如http://msdn.microsoft.com/en-us/library/dd270682.aspx所指出的那样,不支持尝试重新启动正在运行或已完成的任务。做一些通常会引发异常的事情并不是一个好主意,重新使用任务就是其中之一。

答案 1 :(得分:1)

您无法重新开始现有的Task。所以你有两个选择:

  1. 开始新的Task。这可能更干净。
  2. Task中运行一个循环,检查自上次以来是否发生了某些变化,如果是,则开始新的迭代。

答案 2 :(得分:0)

您还可以重构程序逻辑以使用函数指针(或VB.NET中的委托)。