介绍
本篇文章给大家分享的是有关Quartz.Net怎么在。网络核心项目中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
<强>一、介绍强>
石英。网络是一个强大,开源,轻量的作业调度框架,是OpenSymphony的石英API的。NET移植,用c#改写,可用于winform和asp.net应用中。它灵活而不复杂。你能够用它来为执行一个作业而创建简单的或复杂的作业调度。它有很多特征,如:数据库支持,集群,插件,支持用与cron相似的表达式等等。
<强>实践教程强>
以WebApi项目举例,用VS脚手架功能新建WebApi项目。
public void ConfigureServices (IServiceCollection 服务) { ,services.AddMvc (); ,services.AddSingleton();//注册ISchedulerFactory的实例。 以前,}> [路线(“api/(控制器)“)) ,public class ValuesController :控制器 ,{ ,private readonly  ISchedulerFactory _schedulerFactory; ,private IScheduler  _scheduler; ,public ValuesController (ISchedulerFactory schedulerFactory) ,{ 时间=this._schedulerFactory 才能;schedulerFactory; ,} ,(HttpGet) ,public async Task< string[]祝辞,得到() ,{//1,通过调度工厂获得调度器 时间=_scheduler 才能;await _schedulerFactory.GetScheduler ();//2,开启调度器 await 才能_scheduler.Start ();//3、创建一个触发器 var 才能;trigger =, TriggerBuilder.Create () ,,,.WithSimpleSchedule (x =祝辞,x.WithIntervalInSeconds (2) .RepeatForever())//每两秒执行一次 ,,,.Build (); ,//4,创建任务 var 才能;jobDetail =, JobBuilder.Create() ,,,.WithIdentity (“job",,“group") ,,,.Build ();//5,将触发器和任务器绑定到调度器中 await 才能_scheduler.ScheduleJob (jobDetail,,触发); return 才能;await  Task.FromResult (new string [], {,“value1",,“value2",}); ,} 以前,}> public class MyJob :, IJob//创建IJob的实现类,并实现Excute方法。 ,{ ,public Task 执行(IJobExecutionContext 上下文) ,{ return Task.Run((),=比; ,,{ ,,时间=using (StreamWriter sw new StreamWriter (@" C: \ \用户管理员桌面\ \ error.log",,真的,,Encoding.UTF8)) ,,{ ,,sw.WriteLine (DateTime.Now.ToString (“yyyy-MM-dd HH-mm-ss")); ,,} ,,}); ,} 以前,}>输出的结果:
2018-08-03 00-03-19
引用>
00-03-19 2018-08-03 2018-08-03
00-03-22
00-03-22 00-03-24
00-03-24 00-03-26上面这种执行的工作没有参数,当需要参数可以通过下面两种方法传递参数:
<强> 1,在触发器中添加参数值强>
, var trigger3 =, TriggerBuilder.Create () ,,.WithSimpleSchedule (x =祝辞x.WithIntervalInSeconds (2) .RepeatForever())//间隔2秒,一直执行 ,,.UsingJobData (“key1",, 321),//通过在触发器中添加参数的值 ,,.UsingJobData (“key2",,“123“) ,,.WithIdentity (“trigger2",,“group1") ,,.Build ();<强> 2,在工作中添加参数值强>
, IJobDetail job =, JobBuilder.Create() ,,,.UsingJobData (“key1",, 123)//通过工作添加参数的值 ,,,.UsingJobData (“key2",,“123“) ,,,.WithIdentity (“job1",,“group1") ,,,.Build (); 通过下面方法在工作中获取参数值
public class MyJob : IJob ,{ ,public Task 执行(IJobExecutionContext 上下文) ,{ var 才能;jobData =, context.JobDetail.JobDataMap;//获取中工作的参数 var 才能;triggerData =, context.Trigger.JobDataMap;//获取中触发的参数 var 才能;data =, context.MergedJobDataMap;//获取作业和触发器中合并的参数 var 才能;value1=, jobData.GetInt (“key1"); var 才能;value2=, jobData.GetString (“key2"); var 才能;dateString =, DateTime.Now.ToString (“yyyy-MM-dd HH-mm-ss"); return Task.Run((),=比; {才能 using 才能;(StreamWriter sw =, new StreamWriter (@" C: \ \用户管理员桌面\ \ error.log",,真的,,Encoding.UTF8)) {才能 ,,sw.WriteLine (dateString); ,,} ,,}); ,} 以前,}Quartz.Net怎么在。网络核心项目中使用