手机版

净芯中石英的使用方法

时间:2021-08-27 来源:互联网 编辑:宝哥软件园 浏览:

原来工作中有用到定时任务石英,不过是在手动音量调节项目中,现在净芯项目中也要用到,就开始改版。中间发现在网上的教程只有执行定时计划的过程,却很少有人写注册的过程,觉得有点略坑。所以写此文章一是自己做个记录,二是希望能帮助到其他人。后面还把此功能做出了多任务定时执行,网上关于净芯的教程更是少了,花费了不少时间实现了出来。

石英版本:3.0.7

1.框架中下载安装石英

2.新建石英帮助类

(1)新建QuartzJob类,代码如下:

公共类QuartzJob : IJob {公共异步任务执行(IJobExecutionContext)上下文} { var JobKey=context .作业详细信息。关键字;//获取工作信息var triggerKey=上下文.触发键;//获取引发信息日志助手.信息($'{DateTime .Now} QuartzJob:==自动执行{jobKey .Name}|{triggerKey .name } ');等待任务。完成任务;} }ps:上面代码中的工作键和triggerKey可获取到自己定义的工作和引发的信息,这样做多任务时可区分要执行的是哪个任务。另日志助手.信息是自己封装好的日子记录类,可替换为自己的日志类

(2)新建QuartzFactory类,代码如下:

公共类quarzfactory : IjobFactory { private readonly iserviceProvider _ ServiCeProvider;公共Quartz工厂(iServiceProvider service provider){ _ service provider=service provider;}公共IJob新作业(TriggerFiredBundle包,ischidoler调度程序){ var jobDetail=bundle .JobDetailvar作业=(IJob)_serviceProvider .GetService(jobDetail .JobType);返回作业;} public void ReturnJob(IJob作业){ } }(3)新建QuartzService类,代码如下:

#地区单任务公共静态void StartJobTJob()其中TJob : Ijob { var scheduler=new StdSchedulerFactory().GetScheduler().结果;var作业=作业生成器.CreateTJob().WithIdentity("作业")。build();var trigger1=TriggerBuilder .创建()。WithIdentity('job.trigger ').StartNow().带有simple schedule(x=x . WithInterval(TimeSpan .从秒(5))。RepeatForever()).对于作业build();调度程序AddJob(job,true);调度程序ScheduleJob(作业,触发器1);调度程序start();} #endregion #region多任务公共静态void StartJobsTJob(),其中TJob : Ijob { var scheduler=new StdSchedulerFactory().GetScheduler().结果;var作业=作业生成器.CreateTJob().WithIdentity("作业")。build();var trigger1=TriggerBuilder .创建()。WithIdentity('job.trigger1 ').StartNow().带有simple schedule(x=x . WithInterval(TimeSpan .从秒(5))。RepeatForever()).对于作业build();var trigger2=TriggerBuilder .创建()。WithIdentity('job.trigger2 ').StartNow().带有simple schedule(x=x . WithInterval(TimeSpan .从秒(11)开始.RepeatForever()).对于作业build();var dictionary=new dictionary jobdetail,IReadOnlyCollectionITrigger { { job,new HashSetITrigger {trigger1,trigger2 } } }调度程序调度作业(字典,真);调度程序start();} #endregion #region配置公共静态空隙添加石英(这是服务集合服务,参数类型[]作业){服务AddSingletonIJobFactory,quarz factory();服务。添加(作业。选择(作业类型=新的服务描述符(作业类型,作业类型,服务生命周期singleton)));服务. AddSingleton(提供程序={ var schedulerFactory=new StdSchedulerFactory();var调度程序=调度工厂.GetScheduler().结果;调度程序JobFactory=提供程序GetServiceIJobFactory();调度程序start();返回调度程序;});} #endregion3 .在Startup.cs中注册代码

public void ConfigureServices(IServiceCollection services){ services。添加石英(类型为(QuartzJob));//.} public void Configure(IApplicationBuilder应用程序,IHostingEnvironment env,ILoggerFactory logger factory){ QuartzServiCe。StartJobsQuartzJob();///.}ps:因为AddQuartz方法定义了Type[],所以它可以传递多个执行类,比如:services。添加石英(石英作业1的类型,石英作业2的类型);然而,要做到这一点,StartJob()方法必须单独处理,所以我将在这里跳过它

好了,你完成了。这件事折腾了两天,终于尘埃落定。执行结果如下:

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:净芯中石英的使用方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。