Я переключаю все в своем коде с 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);