Вам необходимо настроить работу и триггер. Задача вызывается триггером (http://quartznet.sourceforge.net/tutorial/lesson_3.html). Вот пример, который запускается каждый час.
// construct a scheduler factory
ISchedulerFactory schedFact = new StdSchedulerFactory();
// get a scheduler
IScheduler sched = schedFact.GetScheduler();
sched.Start();
// construct job info
JobDetail jobDetail = new JobDetail("myJob", null, typeof(DumbJob));
// fire every hour
Trigger trigger = TriggerUtils.MakeHourlyTrigger();
// start on the next even hour
trigger.StartTime = TriggerUtils.GetEvenHourDate(DateTime.UtcNow);
trigger.Name = "myTrigger";
sched.ScheduleJob(jobDetail, trigger);
Это ваш класс, который вызывает Service.exe.
public class DumbJob : IJob
{
public void Execute(JobExecutionContext context)
{
string instName = context.JobDetail.Name;
string instGroup = context.JobDetail.Group;
// Note the difference from the previous example
JobDataMap dataMap = context.MergedJobDataMap;
string jobSays = dataMap.GetString("jobSays");
float myFloatValue = dataMap.GetFloat("myFloatValue");
ArrayList state = (ArrayList) dataMap.Get("myStateData");
state.Add(DateTime.UtcNow);
Console.WriteLine("Instance {0} of DumbJob says: {1}", instName, jobSays);
}
}
Вы также можете просто запустить поток в службе окна, следить, когда вы в последний раз выстрелили ех, а затем восстановить после этого. Это немного проще, чем Quartz, и будет выполнять те же самые вещи. Тем не менее, ваш вопрос был специфичным для кварца.
Я бы использовал планировщик окон в этом сценарии, так как функциональность уже инкапсулирована внутри службы. –
Это была моя первая мысль. Но, к сожалению, я не принимаю решения здесь: P –