internal void Process() { try { if (taskStatus != TaskStatus.Waitting) { return; } lock (lockObject) { taskStatus = TaskStatus.Running; task.process(); if (taskStatus == TaskStatus.WaittingForStop) { taskStatus = TaskStatus.Stop; NextProcessTime = null; return; } NextProcessTime = GetNextProcessTime(task.startTime ?? DateTime.Now); taskStatus = NextProcessTime.HasValue ? TaskStatus.Waitting : TaskStatus.Stop; NLog.LogManager.GetLogger(TaskTypeName).Info(string.Format("任务【{0}】执行完毕,状态【{1}】 下次执行时间:{2}", TaskTypeName, taskStatus.GetDescription(), NextProcessTime.HasValue ? NextProcessTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "无")); } } catch (Exception ex) { taskStatus = TaskStatus.Stop; NextProcessTime = null; NLog.LogManager.GetLogger(TaskTypeName).Error(ex, string.Format("TaskAgent.Process异常,任务【{0}】", TaskTypeName)); } }