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);

        }



    }

}

 

你可能感兴趣的:(quartz)