Служба 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>