重启已完成的任务

Moh*_*oor 7 c# task

我有一个在我的应用程序后台定期运行的任务.当我第一次运行它时一切正常,任务运行完美结束.但是第二次和之后,每当我使用task.Start()它时抛出一个异常:

mscorlib.dll中发生未处理的"System.InvalidOperationException"类型的异常附加信息:可能无法在已完成的任务上调用Start.

我确信我的任务功能跑到了最后..我该怎么做才能定期运行任务?

Def*_*ult 11

Stephen Taub解释了它(我实际上可以推荐阅读他关于任务的更多文章)

  1. 问题:我可以在同一个任务上多次调用Start吗?

不可以.任务只能从Created状态转换一次,并且Start会将Task转移到Created状态:因此,Start只能使用一次.任何在未创建状态的任务上调用Start的尝试都将导致异常.Start方法使用同步来确保Task对象保持一致状态,即使并发多次调用Start ...只有其中一个调用可能成功.

..你也看到了什么.您可以使用例如计时器并每次启动一个新任务.
如果您需要检查一次只能运行一个,则可以检查TaskStatus.RanToCompletion当前正在运行的任务