我已在我的网站上创建了DNN计划任务,以生成自上次运行任务以来创建的所有用户的报告。我想这样做,以便只需通过更改DNN中计划任务的属性,即可将报告配置为生成每日,每周,每月或任何其他持续时间。 我的问题是我不知道如何在我的dll中获得任务的“最后运行日期”。目前尚不清楚这是否可能,如果可能,那么我应该使用ScheduleHistoryItem对象的哪个属性。 (DNN v5.6.2)
答案 0 :(得分:2)
是的,这是可能的。一旦通过SchedulingProvider.Instance()。GetScheduleHistory函数提取了所需的ScheduleHistoryItem列表,就可以通过内置的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;
}