Quartz.net使用入门(二)

Windows服务+Quartz.net

App.config配置文件

<?xml version="1.0"?>
<configuration>
  <configSections>
    <sectionGroup name="JobList">
      <section name="Job" type="Quartz入门Service.MyConfigHandler,Quartz入门Service"/>    
    </sectionGroup>
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>

  </startup>
  <JobList>
    <Job>
      <!--这里是一个任务节点-->
      <add key="Url" value="http://www.baidu.com"/>
      <!--需要访问的Url-->
      <add key="Hour" value="10"/>
      <!--开始时间小时-->
      <add key="Minute" value="30"/>
      <!--开始时间分钟-->
    </Job>
  </JobList>
</configuration>

MyService.cs主服务程序:

public partial class MyService : ServiceBase
    {
        public MyService()
        {
            InitializeComponent();
            SystemScheduler _systemScheduler = SystemScheduler.CreateInstance();
            _systemScheduler.StartScheduler();
        }

        protected override void OnStart(string[] args)
        {
            SystemScheduler _systemScheduler = SystemScheduler.CreateInstance();
            _systemScheduler.StartScheduler();
        }

        protected override void OnStop()
        {
        }
    }

SystemScheduler.cs调度程序

  public class SystemScheduler
    {
        private SystemScheduler()
        {
        }

        public static SystemScheduler CreateInstance()
        {
            return new SystemScheduler();
        }

        private IScheduler _scheduler;

        public void StartScheduler()
        {
            //这里读取配置文件中的任务开始时间
            int hour = int.Parse(((NameValueCollection)ConfigurationManager.GetSection("JobList/Job"))["Hour"]);
            int minute = int.Parse(((NameValueCollection)ConfigurationManager.GetSection("JobList/Job"))["Minute"]);

            ISchedulerFactory schedulerFactory = new StdSchedulerFactory();//内存调度
            _scheduler = schedulerFactory.GetScheduler();

            //创建一个Job来执行特定的任务
            IJobDetail synchronousData = new JobDetailImpl("SynchronousData", typeof(SynchronousData));
            //创建并定义触发器的规则(每天执行一次时间为:时:分)
            ITrigger trigger =
                TriggerBuilder.Create()
                    .WithDailyTimeIntervalSchedule(
                        a => a.WithIntervalInHours(24).OnEveryDay().StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(hour, minute))).Build();

            //将创建好的任务和触发规则加入到Quartz中
            _scheduler.ScheduleJob(synchronousData, trigger);
            //开始
            _scheduler.Start();
        }

        public void StopScheduler()
        {
            _scheduler.Shutdown();
        }
    }

SynchronousData.cs同步数据

 public class SynchronousData : IJob
    {
        public void Execute(IJobExecutionContext context)
        {
            string Url = ((NameValueCollection)ConfigurationSettings.GetConfig("JobList/Job"))["Url"];
            WebClient wc = new WebClient();
            WebRequest wr = WebRequest.Create(new Uri(Url));
            using (StreamWriter sw = File.AppendText(@"d:\SchedulerService.txt"))
            {
                sw.WriteLine("------------------" + "MyService服务在:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "     执行了一次任务" + "------------------");
                sw.Flush();
            }
        }
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值