J'utilise C# Quartz.Net pour créer un travail planifié et le transformer en service Windows en utilisant TopShelf.C# Quartz.Net Le travail du planificateur ne s'exécute pas s'il a obtenu le constructeur paramétré.
Le travail planifié n'est pas en cours d'exécution si la classe contient un constructeur paramétré. J'utilise Unit for Dependency Injection.
Quelqu'un peut-il m'aider quel est le problème?
Voici l'exemple de code:
class Program
{
static void Main(string[] args)
{
ISchedulerFactory factory = new StdSchedulerFactory();
IScheduler scheduler = factory.GetScheduler();
scheduler.Start();
IJobDetail job = JobBuilder.Create<SimpleJob>()
.WithIdentity("job1", "group1")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.WithSchedule(CronScheduleBuilder.CronSchedule("0/5 * * * * ?"))
.Build();
scheduler.ScheduleJob(job, trigger);
}
}
public class SimpleJob : IJob
{
public SimpleJob(IRepository repo) { } //If i comment out this line, then it works.
public void Execute(IJobExecutionContext context)
{
Console.WriteLine("Hello, JOb executed");
Console.ReadLine();
}
}
Merci
J'ai essayé, y compris le constructeur par défaut ainsi. Ne fonctionne pas Essentiellement, j'essaie d'injecter quelque chose en utilisant Unity dans ce travail. –
Si je vous comprends bien, vous devez obtenir du quartz pour demander l'unité pour créer le travail pour vous, plutôt que de laisser le quartz le créer directement. Si oui, vous ne pouvez pas utiliser l'usine standard, mais quelque chose comme [Quartz.Unity] (https://github.com/hbiarge/Quartz.Unity) (Je ne l'ai pas utilisé moi-même, donc je ne peux pas aider plus loin) – sgmoore
yes.i utilise Quartz.unity. Je pense que parce qu'il y avait une erreur résolvant l'une des dépendances, le constructeur avec des paramètres n'a pas été appelé. maintenant ça marche –