#region << 版 本 注 释 >> 
 | 
/*---------------------------------------------------------------- 
 | 
 * 命名空间:WIDESEAWCS_QuartzJob 
 | 
 * 创建者:胡童庆 
 | 
 * 创建时间:2024/8/2 16:13:36 
 | 
 * 版本:V1.0.0 
 | 
 * 描述:调度服务层实体映射 
 | 
 * 
 | 
 * ---------------------------------------------------------------- 
 | 
 * 修改人: 
 | 
 * 修改时间: 
 | 
 * 版本:V1.0.1 
 | 
 * 修改说明: 
 | 
 *  
 | 
 *----------------------------------------------------------------*/ 
 | 
#endregion << 版 本 注 释 >> 
 | 
  
 | 
using Microsoft.Extensions.Logging; 
 | 
using System; 
 | 
using System.Collections.Generic; 
 | 
using System.Linq; 
 | 
using System.Text; 
 | 
using System.Threading.Tasks; 
 | 
using WIDESEAWCS_Core.Seed; 
 | 
using WIDESEAWCS_Core; 
 | 
using Microsoft.AspNetCore.Hosting; 
 | 
using Microsoft.Extensions.DependencyInjection; 
 | 
using Microsoft.Extensions.Hosting; 
 | 
using WIDESEAWCS_QuartzJob.Seed; 
 | 
using WIDESEAWCS_QuartzJob.Service; 
 | 
  
 | 
namespace WIDESEAWCS_QuartzJob.QuartzExtensions 
 | 
{ 
 | 
    public sealed class QuartzJobDataTableHostedService : IHostedService 
 | 
    { 
 | 
        private readonly DBContext _dbContext; 
 | 
        private readonly ILogger<QuartzJobDataTableHostedService> _logger; 
 | 
        private readonly string _webRootPath; 
 | 
        private readonly IServiceProvider _serviceProvider; 
 | 
  
 | 
        public QuartzJobDataTableHostedService( 
 | 
            IServiceProvider serviceProvider, 
 | 
            IWebHostEnvironment webHostEnvironment, 
 | 
            ILogger<QuartzJobDataTableHostedService> logger) 
 | 
        { 
 | 
            _serviceProvider = serviceProvider; 
 | 
            _logger = logger; 
 | 
            _webRootPath = webHostEnvironment.WebRootPath; 
 | 
            using var scope = _serviceProvider.CreateScope(); 
 | 
            DBContext dbContext = scope.ServiceProvider.GetService<DBContext>(); 
 | 
            _dbContext = dbContext; 
 | 
        } 
 | 
  
 | 
        public async Task StartAsync(CancellationToken cancellationToken) 
 | 
        { 
 | 
            _logger.LogInformation("开始创建定时器调度数据表"); 
 | 
            await DoWork(); 
 | 
        } 
 | 
  
 | 
        private async Task DoWork() 
 | 
        { 
 | 
            try 
 | 
            { 
 | 
                await QuartzJobCreateDataTabel.SeedAsync(_dbContext, _webRootPath); 
 | 
            } 
 | 
            catch (Exception ex) 
 | 
            { 
 | 
                _logger.LogError(ex, "定时器调度数据表创建错误"); 
 | 
                throw; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        public Task StopAsync(CancellationToken cancellationToken) 
 | 
        { 
 | 
            _logger.LogInformation("定时器调度数据表结束"); 
 | 
            return Task.CompletedTask; 
 | 
        } 
 | 
    } 
 | 
} 
 |