我使用任务并行库实现了一个长期运行的任务。当Task启动时,我抓取几个输入值和集合的快照,然后使用该信息执行各种操作。如果在任务运行时这些值或集合中的任何一个发生了变化,我希望在完成后立即再次运行任务。我应该创建一个新任务还是有办法重用现有的任务?开始第二次迭代的最佳方法是什么?
答案 0 :(得分:11)
创建新任务。
正如http://msdn.microsoft.com/en-us/library/dd270682.aspx所指出的那样,不支持尝试重新启动正在运行或已完成的任务。做一些通常会引发异常的事情并不是一个好主意,重新使用任务就是其中之一。
答案 1 :(得分:1)
您无法重新开始现有的Task
。所以你有两个选择:
Task
。这可能更干净。Task
中运行一个循环,检查自上次以来是否发生了某些变化,如果是,则开始新的迭代。答案 2 :(得分:0)
您还可以重构程序逻辑以使用函数指针(或VB.NET中的委托)。