Служба Windows: Как зарегистрироваться в Castle, чтобы добавить 2 кварцевых задания в класс обслуживания

Я хочу создать 2 кварцевых задания с разными триггерами и запланировать их при запуске (Windows) Service. Как мне зарегистрировать "MyService", чтобы он получал экземпляры заданий?

public class MyService: IService
{
  private IJobDetail job1, job2;
  ....
  public MyService(IJobDetail job1, IJobDetail job2) { }

  public void Start() 
  {
    _scheduler.ScheduleJob(job1, TriggerBuilder.Create()... );
    _scheduler.ScheduleJob(job2, TriggerBuilder.Create()... );
  }
 }

Теперь мой WindsorInstaller выглядит так:

 container.Register(Component.For<IJob>()
                              .ImplementedBy<Job1>()
                              .Named("Job1"));

 container.Register(Component.For<IJob>()
                              .ImplementedBy<Job2>()
                              .Named("Job2"));

 container.Register(Component.For<IJobDetail>()
            .UsingFactoryMethod(() =>
            {
                var job = container.Resolve<IJob>("Job1");
                return JobBuilder.Create(job.GetType())...
            })
 container.Register(Component.For<IJobDetail>()
            .UsingFactoryMethod(() =>
            {
                var job = container.Resolve<IJob>("Job2");
                return JobBuilder.Create(job.GetType())...
            })

 container.Register(Component.For<IService>()
                             .ImplementedBy<MyService>());

Я также реализую IJobFactory, которая будет создавать экземпляр задания с помощью

   container.Resolve<bundle.JobDetail.JobType>   

0 ответов

Другие вопросы по тегам