//------------------------------ /// <summary> /// 添加或更新一个任务,如果已存在(TaskID),则会将其加入 /// </summary> public static void AddTask(M_Content_ScheTask scheMod) { //已完成或禁用任务不进入初始化队例 if (scheMod.Status != 0) { return; } if (scheMod.ID < 1) { TaskList.Add(TaskCenter.CreateTask(scheMod)); } else { BaseTask model = TaskList.FirstOrDefault(p => p.scheMod.ID == scheMod.ID); if (model != null) { TaskCenter.RemoveTask(model.scheMod.ID); } model = TaskCenter.CreateTask(scheMod); TaskList.Add(model); model.Start(); } }
// 到达时间,执行任务 protected void _timer_Elapsed(object sender, ElapsedEventArgs e) { try { bool flag = false; switch (scheMod.ExecuteType) { case (int)M_Content_ScheTask.ExecuteTypeEnum.JustOnce: if (DateTime.Now >= scheMod.ExecuteTime2 && scheMod.Status == 0) { ExecuteFunc(sender, e); flag = true; //scheMod.Status = 100; //DBCenter.UpdateSQL(scheMod.TbName, "Status=100", "ID=" + scheMod.ID); TaskCenter.RemoveTask(scheMod.ID); } break; case (int)M_Content_ScheTask.ExecuteTypeEnum.EveryDay: //已到时间,且今天未执行过 if (string.IsNullOrEmpty(scheMod.LastTime) || scheMod.LastTime2.DayOfYear != DateTime.Now.DayOfYear) { if (DateTime.Now >= scheMod.ExecuteTime2) { ExecuteFunc(sender, e); flag = true; } } break; case (int)M_Content_ScheTask.ExecuteTypeEnum.Interval: { ExecuteFunc(sender, e); flag = true; } break; case (int)M_Content_ScheTask.ExecuteTypeEnum.EveryMonth: { //未执行过,或当本月未执行过 if (string.IsNullOrEmpty(scheMod.LastTime) || scheMod.LastTime2.Month != DateTime.Now.Month) { DateTime time = Convert.ToDateTime(DateTime.Now.ToString("yyyy/MM/") + scheMod.ExecuteTime2.ToString("dd HH:mm:ss")); if (DateTime.Now >= time) { ExecuteFunc(sender, e); flag = true; } } } break; } if (flag) { //更新任务状态和执行日志 scheMod.LastTime = DateTime.Now.ToString(); DBCenter.UpdateSQL(scheMod.TbName, "LastTime='" + DateTime.Now + "'", "ID=" + scheMod.ID); M_Content_ScheLog logMod = new M_Content_ScheLog(); logMod.TaskID = scheMod.ID; logMod.TaskName = scheMod.TaskName; logMod.Result = 1; logBll.Insert(logMod); } } catch (Exception ex) { ZLLog.L("TaskCenter-->[" + scheMod.TaskName + "]出错,原因" + ex.Message); } }