C# 重新启动已完成的任务
我有一个在应用程序后台定期运行的任务。当我第一次运行它时,一切都正常,任务运行到完美结束。但是第二次以及之后,每当我使用C# 重新启动已完成的任务,c#,task,C#,Task,我有一个在应用程序后台定期运行的任务。当我第一次运行它时,一切都正常,任务运行到完美结束。但是第二次以及之后,每当我使用task.Start()时,它都会抛出一个异常: mscorlib.dll中发生类型为“System.InvalidOperationException”的未处理异常 其他信息:不能对已完成的任务调用Start 我确信我的任务功能已经完成了。。我应该如何定期运行任务 (实际上,我可以建议你多读一些他关于任务的文章) 问题:我可以就同一任务多次调用Start吗 不可以。一个任务只
task.Start()
时,它都会抛出一个异常:
mscorlib.dll中发生类型为“System.InvalidOperationException”的未处理异常
其他信息:不能对已完成的任务调用Start
我确信我的任务功能已经完成了。。我应该如何定期运行任务 (实际上,我可以建议你多读一些他关于任务的文章)
如果您需要检查一次只运行一次,则可以检查当前正在运行的任务的
TaskStatus.RanToCompletion
查看允许您定期执行回调方法的方法。这对于需要每小时重复运行的任务非常有用。如果需要确保计时器只同步运行(以防运行重叠),请不要忘记锁定回调方法体。是否需要重复使用相同的任务?你能在每次需要运行代码时创建一个新的吗?谢谢你友好的回复!实际上,Threading.Timer也是线程安全的(它在底部显示)。我的错误我总是被告知使用Threading.Timer
而不是另一个,因为它是一个更有效的版本。老实说,我还没调查过这件事。那么,你和我都是。不久前,我偶然发现了这个SOthread,并从那时起将其用作指南。就在这时,我看到一条评论反驳了投票最多的答案。老实说,另一件事是永远不要相信MSDN的线程安全信息。它错的次数远远多于它对的次数。