• 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);
            }
    
        }
    }
  • 相关阅读:
    最优装载(二分答案)
    最小生成树
    hibernate映射实体类查询时数据库空字段赋值给实体类报错的问题
    'hibernate.dialect' must be set when no Connection avalable
    简单了解一下oracle中的显示游标和存储过程
    oracle中的预定异常和自定义异常
    PL/sql中如何声明变量,常量,控制语句及for,loop,while和顺序控制的使用
    简单了解,使用oracle中的索引,表分区
    oracle中序列,同义词的创建
    数据库权限管理
  • 原文地址:https://www.cnblogs.com/ncore/p/2784746.html
Copyright © 2020-2023  润新知