我需要终止任务在windows服务在OnStop方法
本文关键字:windows 服务 OnStop 方法 任务 终止 | 更新日期: 2023-09-27 18:01:39
所以我有一个Windows服务然后在OnStart
中输入task partial class AppServices : ServiceBase
{
private static readonly ILog Log = LogManager.GetCurrentClassLogger();
private Task _task;
public AppServices()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
Log.Info("Service started");
_task = Task.Factory.StartNew(StartWork, TaskCreationOptions.LongRunning);
}
protected override void OnStop()
{
Log.Info("Service stopped");
}
private void StartWork()
{
while(true)
{
// grab some data from db or services
}
}
我需要添加CancellationToken和停止任务在OnStop或它是不必要的?因为当服务停止时,任务也会停止。它安全吗?
你正以每小时130公里的速度在高速公路上行驶。突然,你看到一个警察叫你停下来。当你注意到他时,你在A点。
- 忽略他的命令
- 立即停止(在A点)改变车道并发生大爆炸。
- 逐渐但安全地停车,降低车速,最终在B点达到0公里/小时。B点尽可能靠近A点,但必要时不危及任何人。
在现实生活中任何人都会选择3)。在。net中,根据应用程序的性质和重要性,你也可以选择1)或2)。
这取决于你是否愿意冒险:
- 被警察追赶(被任务管理器杀死)
- 崩溃(丢失重要数据或导致不一致等)
- 任何
任务作为后台线程运行。因此,当服务停止时,任务将自动停止。是否需要正式取消任务取决于任务是否需要知道它正在退出,以便它可以执行任何必要的清理。