#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 _logger;
private readonly string _webRootPath;
private readonly IServiceProvider _serviceProvider;
///
/// 自动建表
///
public QuartzJobDataTableHostedService(
IServiceProvider serviceProvider,
IWebHostEnvironment webHostEnvironment,
ILogger logger)
{
_serviceProvider = serviceProvider;
_logger = logger;
_webRootPath = webHostEnvironment.WebRootPath;
using var scope = _serviceProvider.CreateScope();
DBContext dbContext = scope.ServiceProvider.GetService();
_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;
}
}
}