TopShelf+Quartz.net实现window定时调度服务

来源:互联网 发布:双色球算法必中6红球 编辑:程序博客网 时间:2024/05/19 02:42

1、新建控制台应用,通过nuget安装Quartz和topshelf、log4net

2、创建定时调度QuartzServer类

    public class QuartzServer : ServiceControl, ServiceSuspend    {        private readonly IScheduler scheduler;        public QuartzServer()        {            scheduler = StdSchedulerFactory.GetDefaultScheduler();        }        public bool Start(HostControl hostControl)        {            scheduler.Start();            return true;        }        public bool Stop(HostControl hostControl)        {            scheduler.Clear();            return true;        }        public bool Continue(HostControl hostControl)        {            scheduler.ResumeAll();            return true;        }        public bool Pause(HostControl hostControl)        {            scheduler.PauseAll();            return true;        }    }

3、创建具体执行的作业类SampleJob

    public class SampleJob:IJob    {        public void Execute(IJobExecutionContext context)        {            LoggerFactory.Info("SampleJob running...");        }    }

4、程序入口

    class Program    {        static void Main(string[] args)        {            HostFactory.Run(x =>                {                x.Service<QuartzServer>();                x.SetDescription("测试服务");                x.SetDisplayName("TestService");                x.SetServiceName("TopShelfQuartzDemo.TestService");            });        }    }

5、quartz配置文件quartz_jobs.xml:

  <schedule>    <job>        <name>SampleJob</name>        <group>sampleGroup</group>        <description>Sample job for Quartz</description>        <job-type>TopShelfQuartzDemo.SampleJob, TopShelfQuartzDemo</job-type>        <durable>true</durable>        <recover>false</recover>    </job>    <trigger>      <cron>        <name>QuartzServerSample</name>        <group>sampleGroup</group>        <job-name>SampleJob</job-name>        <job-group>sampleGroup</job-group>        <!-- 从start-time起,从0秒开始,每1/5秒执行一次IJob.Execute -->        <start-time>2017-10-22T00:00:00+08:00</start-time>        <cron-expression>0/5 * * * * ?</cron-expression>      </cron>    </trigger>  </schedule>

6、quartz.config和Log4Net.config用默认的就可以了