此链接建议创建一个抽象基类,它可以读取Quartz.net的作业数据映射信息,并且每个作业都将从此基类派生。quartz.net抽象基类
http://quartznet.sourceforge.net/faq.html#howtochainjobs
有人可以提供我这个基类的样品,因为我不知道如何检索基类中的工作细节,然后调用派生类中的Execute方法?
PRATIK
此链接建议创建一个抽象基类,它可以读取Quartz.net的作业数据映射信息,并且每个作业都将从此基类派生。quartz.net抽象基类
http://quartznet.sourceforge.net/faq.html#howtochainjobs
有人可以提供我这个基类的样品,因为我不知道如何检索基类中的工作细节,然后调用派生类中的Execute方法?
PRATIK
创建一个抽象基类只是由Quartz.NET文件提出的建议,而不是执行任务链的要求。基本上,他们所提出的建议是,如果你想链的工作:“AJob” - >“BJob” - >“CJob”,你会做什么沿此线:
创建抽象类“ChainBaseJob”。
让您的工作类(AJob和BJob都是类型)从ChainBaseJob继承。
ChainBaseJob将包含某种方法,如:
string GetNextJobInChain()
...这将返回作业的名称(意为石英作业名)。有很多方法可以使用它,但我猜文档建议你的TriggerListener检查(在作业完成方法期间)是否已完成的作业(比如说“AJob”)从ChainBaseJob继承。如果是的话,它会投它并调用GetNextJobInChain,并使用该方法返回的名称调用计划程序在AJob完成时执行它。如果一切都正确实现,则在AJob完成后,TriggerListener将知道执行BJob。
好运。
非常感谢您的解释。如果我将这个基类抽象化,我该如何读取基类中作业的作业数据映射。事情是我的每项工作几乎都有相同的工作细节,如电子邮件地址,用户ID,所以我想在基类属性中读取这些值,所以我不必在每个派生类中重复此代码。如果我让基类非抽象,那么我可以从派生类的构造函数中调用基类的构造函数并读取属性。 我想知道,如果基类是抽象的,那我该如何实现这一点。 – 2010-08-18 15:47:16
这是我做到的。 公共抽象类QuartzJobBase:IJob { public int A {get;组; } public void Execute(JobExecutionContext context) JobDataMap dataMap = context.JobDetail.JobDataMap; A = dataMap.GetInt(“a”); ExecuteInternal(context); } public abstract void ExecuteInternal(JobExecutionContext context);} } 在每个作业的派生类中,重写ExecuteInternal方法。 – 2010-08-18 17:30:55