Reputation: 5494
I have a long-running Task that I've implemented using the Task Parallel Library. When the Task starts, I grab snapshots of several input values and collections then perform various operations using that information. If any of those values or collections change while the Task is running, I'd like to have the Task run again immediately upon completion. Should I be creating a new Task or is there a way to reuse the existing Task? What's the best way to start the second iteration?
Upvotes: 14
Views: 11225
Reputation: 234
You could also refactor program logic to use function pointers (or delegates in VB.NET).
Upvotes: 0
Reputation: 244958
You can't start again an existing Task
. So you have two options:
Task
. This is probably cleaner.Task
that checks whether something changed since the last time and if it does, starts a new iteration.Upvotes: 1
Reputation: 44374
Create a new task.
As http://msdn.microsoft.com/en-us/library/dd270682.aspx points out, trying to restart a running or completed Task is not supported. It is rarely a good idea to do something that normally throws an exception, and re-using a Task is one of those things.
Upvotes: 12