| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | using IMCS.CCS.Entitys;using IMCS.CCS.Service;using Microsoft.Extensions.Hosting;using Microsoft.Extensions.Logging;using System;using System.Collections.Generic;using System.Linq;using System.Threading;using System.Threading.Tasks;namespace IMCS.CCS{    public class Worker : BackgroundService    {        private readonly ILogger<Worker> _logger;        private readonly ITaskService _taskService;        public Worker(ILogger<Worker> logger, ITaskService taskService)        {            _logger = logger;            _taskService = taskService;        }        public override async Task StartAsync(CancellationToken cancellationToken)        {            _logger.LogInformation($"程序服务开始 : {DateTime.Now}");            #region 对任务数据 状态 重置            var result = (await _taskService.FindListAsync())?.ToList() ?? new List<Tasks>();            foreach (var item in result.Where(w => w.State == StateEnum.运行中))            {                item.State = StateEnum.未运行;                item.ExecuteTime = null;                await _taskService.SaveAsync(item);                //自动恢复任务机制                try                {                    await _taskService.RunByIdAsync(item.Id.Value);                }                catch (Exception ex)                {                                           _logger.LogError(ex, $"自动开启任务错误 [{DateTime.Now}] : {ex.Message}");                                     }            }            #endregion            await base.StartAsync(cancellationToken);        }        protected override async Task ExecuteAsync(CancellationToken stoppingToken)        {            //while (!stoppingToken.IsCancellationRequested)            //{            //    _logger.LogInformation("服务运行中 : {time}", DateTimeOffset.Now);            //    await Task.Delay(1000, stoppingToken);            //}            await Task.CompletedTask;        }        public override async Task StopAsync(CancellationToken cancellationToken)        {            _logger.LogError($"程序服务结束 : {DateTime.Now}");            await base.StopAsync(cancellationToken);        }        public override void Dispose()        {            _logger.LogInformation($"程序服务 Dispose 释放 : {DateTime.Now}");            base.Dispose();        }    }}
 |