• 定时任务框架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/

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

  • 相关阅读:
    快速入门系列--MVC--05行为
    2015链家网面试记录
    快速入门系列--MVC--04模型
    django 添加动态表格的方法
    git clone
    postgresql数据库实用操作
    django 实战
    Android手机分辨率基础知识(DPI,DIP计算)
    Android中xml设置Animation动画效果详解
    Unable to execute dex: Multiple dex files define Lcom/gl
  • 原文地址:https://www.cnblogs.com/x666066/p/10295418.html
Copyright © 2020-2023  润新知