Quartz.net通用函数添加到计划表(类型转换问题)

时间:2018-12-19 15:47:49

标签: casting task quartz.net

我将代码中的所有内容从FluentScheduler切换到Quartz.net,并尝试遵循“请勿重复自己”规则。我有一堆名字相同但名称空间不同的作业,但是它们都被相同的3行调用,只有很小的变化。例如,我具有以下类型的设置:

//BasicSchedule is an IJob
//Run() is public virtual Task Run(IJobExecutionContext context) 
MyApp.Option1.BasicSchedule.Run();
MyApp.Option2.BasicSchedule.Run();
MyApp.Option3.BasicSchedule.Run();

我创建了一个函数,但不确定是否可以通过将其放在MyApp级别上来重用它,或者我是否应该将该函数复制到每个Option空间中。话虽这么说,但是JobBuilder.Create<>期望有一个任务,因此我很难弄清楚如何添加作业。

我无法将其作为字符串传递,并且无法进行类型转换。我确定我缺少一些基本知识,但是我对使用Tasks有点陌生,所以我希望有人可以指出正确的方向。

public static void AddCurrentScheduleItem(string JobName, int RepeatDelay) {
         IJobDetail Job = JobBuilder.Create<(Task<T>)JobName>().WithIdentity(JobName).Build();
        ITrigger Trigger = TriggerBuilder.Create().WithIdentity(JobName).WithSimpleSchedule(x => x.WithIntervalInMinutes(RepeatDelay).RepeatForever()).Build();
        await Config.CurrentSchedule.ScheduleJob(Job, Trigger);

}

作为参考,工作方式是这样的,但是我必须为每项工作重复这3行。

IJobDetail Job1= JobBuilder.Create<Job1>().WithIdentity("Job1").Build();
ISimpleTrigger Job1Trigger = (ISimpleTrigger)TriggerBuilder.Create().WithIdentity("Job1").StartAt(StartNow).ForJob("Job1").Build();
await Config.CurrentSchedule.ScheduleJob(Job1, Job1Trigger);

0 个答案:

没有答案