【发布时间】:2020-04-28 20:47:51
【问题描述】:
我有一个 Windows 服务,其中包含触发和忘记任务的方法。我想了解在 Windows 服务停止或重新启动时如何处理这些问题?
为清楚起见,我使用以下代码: _ = Task.Run(() => DoSomething());
如果这个任务在执行的中途,windows服务如何处理服务的停止和重启?
(1) 我对重启的假设是服务的 OnStop() 方法将被调用,fire and forget 任务将继续。然后 OnStart() 将被调用,并且再次触发并忘记任务应该继续。该任务将在完成后处理。在此过程中,.net 运行时是否会自动进行任何其他任务或内存管理?
(2) 我对停止的假设是服务的 OnStop() 方法将被调用,即发即弃任务将继续。 OnStop 方法将返回,然后服务将被终止,从而终止火忘记任务。
(3) 因此,根据我自己的假设,使用“即发即弃”任务不应阻止服务停止或重新启动。
注意:我无法停止和重新启动服务。所以我试图确定这里的行为。有人可以确认或否认我的假设吗?谢谢。
【问题讨论】:
-
您的假设符合我的假设,而我自己对 Windows 服务没有任何深入的了解。停止和重新启动服务时遇到了哪些问题?此外,在任何给定时刻,平均有多少个即发即弃的任务正在执行?
标签: c# .net service task task-parallel-library