• Quartz.Net示例


    Reference:C5.dll,Common.Logging.dll,Quartz.dll

    Global.asax.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.SessionState;
    
    namespace SGSGHome.Web
    {
        public class Global : System.Web.HttpApplication
        {
            protected void Application_Start(object sender, EventArgs e)
            {
                MailScheduler.Instance.Start();
            }
    
            protected void Application_End(object sender, EventArgs e)
            {
                MailScheduler.Instance.Stop();
            }
        }
    }
    MailJob.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data;
    using Quartz;
    
    namespace SGSGHome.Web
    {
        public class MailJob : IJob
        {
            public void Execute(IJobExecutionContext context)
            {
                var client = new ADService.ADServiceClient();
                var dt = DBHelper.ExecuteDataTable("select * from MessageQueue where SendDate is null");
                foreach (DataRow dr in dt.Rows)
                {
                    client.SendMail(
                        dr["Title"].ToString(),
                        dr["Body"].ToString(),
                        dr["MailTo"].ToString(),
                        dr["CCTo"].ToString());
    
                    DBHelper.ExecuteNonQuery(
                        string.Format("update MessageQueue set SendDate=getdate() where ID={0}", dr["ID"]));
                }
            }
        }
    }
    MailScheduler.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using Quartz;
    using Quartz.Impl;
    
    namespace SGSGHome.Web
    {
        public class MailScheduler
        {
            // First we must get a reference to a scheduler
            static ISchedulerFactory sf = new StdSchedulerFactory();
            static IScheduler sched = sf.GetScheduler();
    
            static MailScheduler _instance = null;
            static object lockObj = new object();
    
            public static MailScheduler Instance
            {
                get
                {
                    if (_instance == null)
                    {
                        lock (lockObj)
                        {
                            if (_instance == null)
                            {
                                _instance = new MailScheduler();
                            }
                        }
                    }
                    return _instance;
                }
            }
    
            public void Start()
            {
                // define the job and tie it to our job class
                IJobDetail job = JobBuilder.Create<MailJob>()
                    .WithIdentity("mailjob", "group1")
                    .Build();
    
                // Trigger the job to run on the next round time
                ITrigger trigger = TriggerBuilder.Create()
                    .WithIdentity("mailtrigger", "group1")
                    .StartNow()
                    .WithSimpleSchedule(x => x.WithIntervalInSeconds(10).RepeatForever())
                    .Build();
    
                sched.ScheduleJob(job, trigger);
                sched.Start();
            }
            public void Stop()
            {
                sched.Shutdown(true);
            }
    
        }
    }
  • 相关阅读:
    在 docker 容器中捕获信号
    python入门二维码生成
    SSH 端口转发
    Python之模块与包
    滑块验证demo示例
    上下界网络流初探
    大整数模板
    计算几何模板
    关于差分约束系统的脑洞
    并查集,以及可拆分并查集
  • 原文地址:https://www.cnblogs.com/ncore/p/2784746.html
Copyright © 2020-2023  润新知