Restart a completed task
c#, task
Solution
Stephen Taub explains it (I can actually recommend reading more of his articles regarding Tasks)
- Question: Can I call Start more than once on the same Task?
No. A Task may only transition out of the Created state once, and Start transitions a Task out of the Created state: therefore, Start may only be used once. Any attempts to call Start on a Task not in the Created state will result in an exception. The Start method employs synchronization to ensure that the Task object remains in a consistent state even if Start is called multiple times concurrently… only one of those calls may succeed.
.. Which is what you see as well. You can use for instance a timer and start a new Task each time. If you need to check that only one run at a time, you can check for `TaskStatus.RanToCompletion` on the task that is currently running
Problem
I have a Task that run periodically in the background of my application. When I run it for the first time everything is ok and the Task run to end perfectly. But for the second time and after that whenever I use `task.Start()` it throws an exception: An unhandled exception of type 'System.InvalidOperationException' occurred in mscorlib.dll Additional information: Start may not be called on a task that has completed. I am sure that my task function ran to the end.. what should I do to run the task periodically?