【发布时间】:2010-11-24 17:08:41
【问题描述】:
我正在尝试将 Quartz.NET 实现为 C# 中的 Windows 服务。当我期望它们触发时,我的工作并没有触发......实际上,据我所知?
我的“我的工作”计划在“每分钟”之后的下一个偶数分钟开始运行。但是,当下一分钟到来时,我似乎无法判断是否有任何实际运行。
我会假设当我的作业运行时,会在作业执行时弹出一个 CLI 窗口,并且控制台操作将可见,(我什至在其中放了一个 Console.ReadKey() 以确保窗口不会打开和关闭,所以快我看不到它),但据我所知,时间表根本没有执行作业。
我注意到所有时间都是 UTC 时间,StartTimeUtc 将设置为 UTC 时间,距离我的本地计算机时间 +6 小时,但我还假设 Quartz 调度程序通过计算来处理它我的 TimeZone 设置中的执行时间,尽管我无法确认,或确认我的时间表设置的实际时间。
我想有一些方法可以设置 Common Logging 程序集并利用它来帮助我了解我的状态,但我还没有弄清楚该怎么做才能启用任何类型的日志以获取来自我的 Windows 的反馈服务,除了写入我为它创建的事件日志。
我的 Windows 服务的 OnStart 函数
protected override void OnStart(string[] args)
{
eventLog.WriteEntry("--- STARTING eLoyalty Scheduler Service ---");
// construct a scheduler factory
ISchedulerFactory schedFact = new StdSchedulerFactory();
// get a scheduler
IScheduler sched = schedFact.GetScheduler();
// construct job info
JobDetail jobDetail = new JobDetail("eLoyaltySchedulerService", null, typeof(PortalSchedulerJob));
jobDetail.JobDataMap["jobSays"] = "eLoyalty Scheduler Service Executing!";
jobDetail.JobDataMap["myStateData"] = new ArrayList();
// fire every minute
Trigger trigger = TriggerUtils.MakeMinutelyTrigger();
// start on the next even minute
trigger.StartTimeUtc = TriggerUtils.GetEvenMinuteDate(DateTime.UtcNow);
// name it
trigger.Name = "NextEvenMinute";
// schedule it
sched.ScheduleJob(jobDetail, trigger);
// start the schedule
sched.Start();
eventLog.WriteEntry("--- STARTED eLoyalty Scheduler Service ---");
}
我的 Job 的 Execute() 函数如下:
public void Execute(JobExecutionContext context)
{
try
{
string instName = context.JobDetail.Name;
string instGroup = context.JobDetail.Group;
JobDataMap dataMap = context.MergedJobDataMap;
string jobSays = dataMap.GetString("jobSays");
ArrayList state = (ArrayList)dataMap["myStateData"];
state.Add(DateTime.UtcNow);
Console.WriteLine("Instance {0} of PortalSchedulerJob says: {1} @ {2}", instName, jobSays, DateTime.UtcNow);
Console.ReadKey();
}
catch (JobExecutionException Ex)
{
throw Ex;
}
}
如果您能帮我弄清楚如何解决我的实际日程安排活动问题,我也许可以自己解决这个问题...?
【问题讨论】:
标签: c# quartz-scheduler quartz.net