在netweb项目刚启动,Program.cs文件中添加定时任务

文章描述了如何使用Quartz库在C#中创建一个定时任务,每24小时检查并删除AllcomputeDataTempFiles下超过24小时的文件。任务通过Job和Trigger实现,并包含了文件操作和错误处理的逻辑。
摘要由CSDN通过智能技术生成

1.引入

using IScheduler = Quartz.IScheduler;

2.代码

/// <summary>
/// 添加定时任务,每隔24h执行一次
/// 删除超过24h的AllcomputeDataTempFiles下的文件
/// </summary>
private static void CreateTimeJob()
{
    //1.创建调度单元
    Task<IScheduler> tsk = StdSchedulerFactory.GetDefaultScheduler();
    IScheduler scheduler = tsk.Result;
    //2.创建一个具体的作业即job(具体的job需要单独在一个文件中执行)
    IJobDetail job = JobBuilder.Create<DeleteAllComputeDataFilesJob>().WithIdentity("完成").Build();
    //3.创建并配置一个触发器trigger,
    ITrigger _CtroTrigger = TriggerBuilder.Create()
        .WithIdentity("定时确认")
        //.WithSimpleSchedule(x => x.WithIntervalInSeconds(50).RepeatForever())
        .WithSimpleSchedule(x => x.WithIntervalInHours(24).RepeatForever())
        .Build()
        as ITrigger;
    //4.将job和trigger加入到作业调度池中
    scheduler.ScheduleJob(job, _CtroTrigger);
    //5.开启调度
    scheduler.Start();

    TPBase.Logger.Info("定时任务启动:超过24h的AllComputeData文件将会被删除!");
}

/// <summary>
///  删除超过24h的AllcomputeDataTempFiles下的文件
/// </summary>
public class DeleteAllComputeDataFilesJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        await Task.Run(() =>
        {
            TPBase.Logger.Info($"当前时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")},定时任务执行:删除文件:");
            try
            { 
                string folderPath = "AllcomputeDataTempFiles";
                // 判断文件夹是否存在  
                if (Directory.Exists(folderPath))
                {
                    // 列出文件夹下的所有文件  
                    string[] files = Directory.GetFiles(folderPath);
                    foreach (string file in files)
                    {
                        string fileName = Path.GetFileName(file);
                        List<string> fileNameList = fileName.Split(new char[] { '_', '.' }, StringSplitOptions.RemoveEmptyEntries).ToList();
                        string dateString = fileNameList[fileNameList.Count() - 2];
                        long fileCreatTime = long.Parse(dateString + "");
                        long curTime = DateTimeOffset.Now.ToUnixTimeSeconds();
                        // 计算时间差(秒)  
                        long timeDifferenceInSeconds = curTime - fileCreatTime;
                        // 将时间差转换为小时  
                        double timeDifferenceInHours = timeDifferenceInSeconds / 3600.0;
                        // 比较时间差是否超过24小时  
                        if (timeDifferenceInHours > 24)
                        {
                            bool isDelete = FunCommon.DeleteFileIfExists(folderPath, fileName);
                            if (isDelete == true)
                            {
                                TPBase.Logger.Info($" {fileName} 被删除!!");
                            }
                            else
                            {
                                TPBase.Logger.Error($" {fileName} 删除失败!!");
                            }
                        }
                    }
                }
            }
            catch(Exception ex)
            {
                TPBase.Logger.Error($"当前时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")},定时任务执行失败!!!");
            }
            
        });
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值