protected override DateTime?CalcNextExecuteTime() { if (LastExecuteTime != null && LastExecuteTime.GetValueOrDefault() != DateTime.MinValue) //如果已经执行过的 { return(DateTime.MaxValue); } else { return(ExecuteTimeSpan); } }
protected override DateTime?CalcNextExecuteTime() { if (TaskType == TaskExecuteType.Manual) { return(null); } var tempTime = LastExecuteTime.GetValueOrDefault(DateTime.Now); tempTime = tempTime.AddMilliseconds(realTimeSpan.TotalMilliseconds); return(tempTime); }
protected override DateTime?CalcNextExecuteTime() { if (TaskType == TaskExecuteType.Manual) { return(null); } var span = this.ExecuteTimeSpan; switch (CycleType) { case CycleScheduleType.PerDay: { DateTime tempTime = DateTime.Now; //if (LastExecuteTime == null || LastExecuteTime<DateTime.Now) //{ tempTime = DateTime.Now; if (tempTime.Hour <= span.Hour && tempTime.Minute <= span.Minute) { tempTime = DateTime.Now; } else { tempTime = DateTime.Now.AddDays(1); } //} //else //{ // tempTime = LastExecuteTime.GetValueOrDefault().AddDays(1); //} return(new DateTime(tempTime.Year, tempTime.Month, tempTime.Day, span.Hour, span.Minute, span.Second));; } case CycleScheduleType.PerWeek: { DateTime tempTime = DateTime.Now; if ((int)tempTime.DayOfWeek < span.Day - 1) { tempTime = tempTime.ThisWeek((DayOfWeek)(span.Day - 1)); } else if ((int)tempTime.DayOfWeek < span.Day - 1) { if (tempTime.TimeOfDay > span.TimeOfDay) { tempTime = tempTime.NextWeek((DayOfWeek)(span.Day - 1)); } } else { tempTime = tempTime.NextWeek((DayOfWeek)(span.Day - 1)); } return(new DateTime(tempTime.Year, tempTime.Month, tempTime.Day, span.Hour, span.Minute, span.Second)); } break; case CycleScheduleType.PerMonth: { DateTime tempTime; if (LastExecuteTime == null) { tempTime = DateTime.Now; if (tempTime.Day <= span.Day && tempTime.Hour <= span.Hour && tempTime.Minute <= span.Minute) { tempTime = DateTime.Now; } else { tempTime = DateTime.Now.AddMonths(1); } } else { tempTime = LastExecuteTime.GetValueOrDefault().AddMonths(1); } return(new DateTime(tempTime.Year, tempTime.Month, span.Day, span.Hour, span.Minute, span.Second)); } case CycleScheduleType.PerHour: { DateTime tempTime; if (LastExecuteTime == null) { tempTime = DateTime.Now; if (tempTime.Minute < span.Minute) { tempTime = DateTime.Now; } else { tempTime = DateTime.Now.AddHours(1); } } else { tempTime = LastExecuteTime.GetValueOrDefault().AddHours(1); } return(new DateTime(tempTime.Year, tempTime.Month, tempTime.Day, tempTime.Hour, span.Minute, span.Second)); } default: return(DateTime.MaxValue); } }