此鏈接建議創建一個抽象基類,它可以讀取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