zoukankan      html  css  js  c++  java
  • asp.net mvc中调度器(Quartz)的使用

    今天因为工作原因来不及深究,等以后有空闲了再仔细研究研究;

    使用的版本为2.4,貌似版本差异很大,同样的写法在高版本行不通了;

    调度器首先需要实现工作类,这个工作类负责执行你所需要延时或者定时执行的代码;

    工作类需继承IJob(调度器提供该接口)接口,实现Execute方法,同样不同的版本Execute方法也完全不一样;

    工作类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using System.Web;
    using DbFrame;
    using Quartz;
    using ZT_GZWSSFManage.Model.System;
    using ZT_GZWSSFManage.UI.DbContextInfo;
    
    namespace ZT_GZWSSFManage.UI.Helper.Tigger
    {
        /// <summary>
        /// 解锁用户触发器工作
        /// </summary>
        public class UnlookSigger : IJob
        {
            public void Execute(IJobExecutionContext context)
            {
                DBContext db = DapperDbContext.GetDbContext();
                //通过job 传递过来的参数
                JobDataMap data = context.JobDetail.JobDataMap;
                int id = data.GetIntValue("id");
                var en = db.Find<sys_user>(c => c.bn_id == id);
                if (en != null)
                {
                    en.IsDelete = 0;
                    en.Ex = "";
                    en.UpdateTime = DateTime.Now;
                    en.AddTime = DateTime.Now;
                    db.Edit<sys_user>(en, c => c.bn_id == en.bn_id);
                    CommonHelper.WriteOperatorSysLog("用户管理", "解锁", "操作成功", en.LoginName);
                }
            }
        }
    }
    

      还有调度器版本不同差异也很大,完全就是换了另外一种的感觉了;

    调度器执行工作类:

    //创建调度器
    StdSchedulerFactory factory = new StdSchedulerFactory();
    IScheduler scheduler = factory.GetScheduler();
    
    //创建工作事项
    IJobDetail job = JobBuilder.Create<UnlookSigger>().WithIdentity("UnlookSigger").
    UsingJobData("id", checkUser.bn_id).Build();
    //创建一个触发器
    ITrigger trigger =
    TriggerBuilder.Create()                                  //获取TriggerBuilder
    .StartAt(DateBuilder.TodayAt(01, 00, 00))  //开始时间,今天的1点(hh,mm,ss),可使用StartNow()
    .ForJob(job)                               //将触发器关联给指定的job
    .WithPriority(10)                          //优先级,当触发时间一样时,优先级大的触发器先执行
    .WithIdentity("Unlook", "Sigger")          //添加名字和分组
    .WithSimpleSchedule(x => x.WithIntervalInMinutes(3).RepeatForever())//每三分钟执行一次
    .Build();
    scheduler.Start();//打开调度器
    //将job和trigger注册到scheduler中
    scheduler.ScheduleJob(job, trigger);
    

      

  • 相关阅读:
    linux 解压tgz 文件指令
    shell 脚本没有执行权限 报错 bash: ./myshell.sh: Permission denied
    linux 启动solr 报错 Your Max Processes Limit is currently 31202. It should be set to 65000 to avoid operational disruption.
    远程查询批量导入数据
    修改 MZTreeView 赋权节点父节点选中子节点自动选中的问题
    关于乱码的问题解决记录
    我的网站优化之路
    对设计及重构的一点反思
    我的五年岁月
    奔三的路上
  • 原文地址:https://www.cnblogs.com/zhoulei0517/p/13435449.html
Copyright © 2011-2022 走看看