2011-12-12 26 views
1

我在我的網站上創建了DNN計劃任務,以生成自上次運行任務後創建的所有用戶的報告。我希望這樣做,以便可以將報告配置爲每天,每週,每月或任何其他持續時間,只需通過更改DNN中的計劃任務的屬性即可。 我的問題是,我不知道如何獲得我的dll內任務的「上次運行日期」。目前還不清楚這是否可行,如果是,那麼我應該使用ScheduleHistoryItem對象的哪個屬性。 (DNN v5.6.2)DNN計劃任務 - 上次運行日期

回答

2

是的,這是可能的。一旦通過SchedulingProvider.Instance()。GetScheduleHistory函數拉出了您想要的ScheduleHistoryItems列表,您可以使用內置的ScheduleHistorySortStartDate IComparer對列表進行排序。下面的函數將返回運行的最後一個ScheduledHistoryItem,然後您可以檢查結果的EndDate屬性以確定任務上次完成的時間。

public DotNetNuke.Services.Scheduling.ScheduleHistoryItem GetLastScheduleHistoryItem(int ScheduleId = -1) 
{ 
System.Collections.ArrayList scheduleHistory = DotNetNuke.Services.Scheduling.SchedulingProvider.Instance().GetScheduleHistory(ScheduleId); 
if (scheduleHistory != null) 
{ 
    scheduleHistory.Sort(new DotNetNuke.Services.Scheduling.ScheduleHistorySortStartDate()); //Sort the returned results by the Start Date 

    if (scheduleHistory.Count > 0) 
     return (DotNetNuke.Services.Scheduling.ScheduleHistoryItem)scheduleHistory[0]; 

} 

return null; 
}