zoukankan      html  css  js  c++  java
  • 定时任务框架Quartz.net

    //定时任务框架Quartz.net
    //Quartz.Net是从Java版的Quartz移植过来的
    //少量代码完成定制任务 如每隔多长时间执行 定时执行 定时执行几次
    //基本概念:计划者(IScheduler) 工作(IJob) 触发器(Trigger)
    //给计划者一个任务,让他在触发器触发的条件下执行这个工作
    //(将要定时执行的任务的代码写到实现IJob接口的Execute方法中即可,时间到,Execute方法会被调用)

    //安装方法:Install-package Quartz -Version 2.5.0 (版本变化大)
    //调用TestJob类Exceute方法

     //IScheduler sched = new StdSchedulerFactory().GetScheduler();
                //JobDetailImpl jdBossReport = new JobDetailImpl("jdTest", typeof(TestJob));
                ////                                   每天23.45执行任务
                //IMutableTrigger trggerBossReport = CronScheduleBuilder.DailyAtHourAndMinute(23, 45).Build();
                ////                                   每周固定时间执行任务  每周五周六23.45执行
                ////                                  CronScheduleBuilder.AtHourAndMinuteOnGivenDaysofWeek(23, 45,DayOfWeek.Friday,DayOfWeek.Sunday);
                ////                                       每周固定时间执行任务 
                ////                                 CronScheduleBuilder.WeelklyOnDayAndHourAndMinute();
                ////                                   每月固定时间执行任务
                ////                                   CronScheduleBuilder.MonthlyOnDayAndHourAndMinute();
                ////Crond表达式                     CronScheduleBuilder.CromSchedule("表达式");
                //trggerBossReport.Key = new TriggerKey("triggerTest");
                //sched.ScheduleJob(jdBossReport, trggerBossReport);
                ////启动
                //sched.Start();

    TestJob类    (TestJob类有点小问题,待解决)

    namespace pro
    {
        public class TestJob:IJob
        {
            public void Exceute(IJobExecutionContext context)
            {
                try
                {
    
    
                Console.WriteLine("任务执行啦"+DateTime.Now);
                SqlConnection conn = new SqlConnection();
                conn.Open();
                Console.WriteLine("任务执行完毕");
                }
                catch(Exception ex)
                {
                    Console.WriteLine("定时任务执行错误",ex);
                //    ILog log = LogManager.GetLogger(typeof(TestJob));
                //    log.Error("定时任务执行错误",ex);
                }
    
                try
                {
                    string path=HostingEnvironment.MapPath("~/web.config");
                    File.AppendAllText(@"d:/log.txt", path + "
    ");
                }
                catch (Exception ex)
                {
                    File.AppendAllText(@"d:/log.txt", "出搓啦" + ex + "
    ");
    
                }
               
            }
        }
    }

    //IJob 中Execute方法异常不会显示,为解决此问题建议 try{} catch{}finally{}
    //IJob 是单独的线程 是拿不到HTTPContext的 使用MapPath需要HostingEnvironment.MapPath
    //也不可以做Request Session Web相关工作

    ////如何执行多个任务?

     //IScheduler sched = new StdSchedulerFactory().GetScheduler();
                ////=====================多个任务可重写(JobDetail和Trgger的名字不要重复)============================================
                //{
                //    JobDetailImpl jdBossReport = new JobDetailImpl("jdTest", typeof(TestJob));
                //    CalendarIntervalScheduleBuilder builder = CalendarIntervalScheduleBuilder.Create();
                //    builder.WithInterval(1, IntervalUnit.Second);
                //    IMutableTrigger trggerBossReport = builder.Build();
                //    trggerBossReport.Key = new TriggerKey("triggerTest");
                //    sched.ScheduleJob(jdBossReport, trggerBossReport);
                //}
                //{
                //    JobDetailImpl jdBossReport = new JobDetailImpl("jdTest", typeof(TestJob));
                //    CalendarIntervalScheduleBuilder builder = CalendarIntervalScheduleBuilder.Create();
                //    builder.WithInterval(5, IntervalUnit.Second);
                //    IMutableTrigger trggerBossReport = builder.Build();
                //    trggerBossReport.Key = new TriggerKey("triggerTest");
                //    sched.ScheduleJob(jdBossReport, trggerBossReport);
                //}
                ////=====================================================================================
                //sched.Start();
                //Console.ReadLine();


    //优秀开源定时调度框架 :hangFire

    http://hangfire.io/

    优点:带任务监控界面,高级版收费

  • 相关阅读:
    idea中导入jquery无法生效解决办法
    如何用最简单的方式解释依赖注入?依赖注入是如何实现解耦的?
    spring的ioc依赖注入的三种方法(xml方式)
    向存在外键的表中插入数据时出错的原因以及插入外键为空的方法
    mysql一条语句添加多条数据
    SQL中distinct的用法
    Java实体对象为什么要实现Serializable接口?
    servlet中使用request.getHeader("referer")获取页面从哪跳转过来的
    java动态拼接sql语句并且执行时给sql语句的参数赋值
    正则表达式
  • 原文地址:https://www.cnblogs.com/x666066/p/10295418.html
Copyright © 2011-2022 走看看