c# .net framework 4.5.2 , Quartz.NET 3.0.7

Reference: https://www.cnblogs.com/personblog/p/11277527.html ,

https://www.jianshu.com/p/b8e7e4deb60a

 

.NET MVC in Example:

ReportJob.cs

 

using Quartz;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;

namespace Quartz研究.MyJob.GetWxQdSubMchId
{
    [DisallowConcurrentExecution]
    public class ReportJob : IJob
    {

        public Task Execute(IJobExecutionContext context)
        {

            return Task.Run(() =>
            {

                foo();

            });

        }


        public void foo()
        {
            try
            {
                var reportDirectory = string.Format("~/reports/{0}/", DateTime.Now.ToString("yyyy-MM"));
                reportDirectory = System.Web.Hosting.HostingEnvironment.MapPath(reportDirectory);
                if (!Directory.Exists(reportDirectory))
                {
                    Directory.CreateDirectory(reportDirectory);
                }
                var dailyReportFullPath = string.Format("{0}report_{1}.log", reportDirectory, DateTime.Now.Day);
                var logContent = string.Format("{0}==>>{1}{2}", DateTime.Now, "create new log.", Environment.NewLine);
                File.AppendAllText(dailyReportFullPath, logContent);

            }
            catch (Exception ex)
            {
                //日志
            }

        }


    }
}

 

 

--

ReportJobScheduler.cs

 

using Quartz;
using Quartz.Impl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Quartz研究.MyJob.GetWxQdSubMchId
{
    public class ReportJobScheduler
    {
        /// <summary>
        /// 创建计划任务
        /// </summary>
        public static async void Start()
        {

            try
            {
                string thisJob = "ReportJob";

                string groupName = "gp"+ thisJob;
                string jobName = "job" + thisJob;
                string triggerName = "trigger" + thisJob;

                // 创建作业调度池
                ISchedulerFactory factory = new StdSchedulerFactory();
                IScheduler scheduler = await factory.GetScheduler();

                // 创建作业
                IJobDetail job = JobBuilder.Create<ReportJob>()
                  .WithIdentity(jobName, groupName)
                  .Build (); 

                //Create a trigger performed once every 10s 
                ITrigger Trigger = TriggerBuilder.Create () 
                  .WithIdentity (triggerName, groupName) 
                  .StartNow () 
                  .WithSimpleSchedule (X => X 
                    .WithIntervalInSeconds ( 10 ) 
                    .RepeatForever ()) 
                  .build (); 

                / / is added to the job scheduler pool 
                the await scheduler.ScheduleJob (job, Trigger); 

                // start running 
                the await scheduler.Start (); 
            } 
            the catch (Exception EX) 
            { 
                // 
        }Log 
            } 


    } 
}

 

 

--

Application_Start()

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;

namespace Quartz研究
{
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {

            Quartz研究.MyJob.GetWxQdSubMchId.ReportJobScheduler.Start();

            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}

 

 

 

--

 

Guess you like

Origin www.cnblogs.com/runliuv/p/11976385.html