我需要终止任务在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或它是不必要的?因为当服务停止时,任务也会停止。它安全吗?

我需要终止任务在windows服务在OnStop方法

你正以每小时130公里的速度在高速公路上行驶。突然,你看到一个警察叫你停下来。当你注意到他时,你在A点。

  1. 忽略他的命令
  2. 立即停止(在A点)改变车道并发生大爆炸。
  3. 逐渐但安全地停车,降低车速,最终在B点达到0公里/小时。B点尽可能靠近A点,但必要时不危及任何人。

在现实生活中任何人都会选择3)。在。net中,根据应用程序的性质和重要性,你也可以选择1)或2)。

这取决于你是否愿意冒险:

  1. 被警察追赶(被任务管理器杀死)
  2. 崩溃(丢失重要数据或导致不一致等)
  3. 任何

任务作为后台线程运行。因此,当服务停止时,任务将自动停止。是否需要正式取消任务取决于任务是否需要知道它正在退出,以便它可以执行任何必要的清理。