public void On_TaskJob_Finished(CurrentProcessTask Task) { Task.Finished = true; _TaskReport.On_TaskJob_Finished(Task); TaskRemove(Task); logger.Debug("On_TaskJob_Finished"); }
public static CurrentProcessTask Excute(Command TaskName, Dictionary <string, string> param = null, string TaskId = "", string MainTaskId = "") { CurrentProcessTask result = null; string uid = TaskId.Equals("")? Guid.NewGuid().ToString():TaskId; lock (CurrentProcessTasks) { if (!CurrentProcessTasks.ContainsKey(uid)) { result = new CurrentProcessTask(); CurrentProcessTasks.Add(uid, result); result.Id = uid; result.MainTaskId = TaskId.Equals("") ? MainTaskId : TaskId; result.IsSubTask = TaskId.Equals(""); result.Params = param; result.TaskName = TaskName; } else { logger.Error("ID is exsit:" + uid); return(null); } } logger.Debug("TaskName:" + TaskName.ToString()); ThreadPool.QueueUserWorkItem(new WaitCallback(TaskFlow.Excute), result); return(result); }
private static void Next(Node Node, Transaction Txn, string ReturnType) { CurrentProcessTask CurrentTask = Txn.TaskObj; int count = 0; lock (CurrentProcessTasks) { var findExcuted = from each in CurrentTask.CheckList where each.ExcuteName.Equals(Txn.Method) && each.ExcuteType.Equals(ReturnType.ToUpper()) && each.NodeName.Equals(Txn.NodeName) && !each.Finished select each; if (findExcuted.Count() != 0)//標記完成的命令 { findExcuted.First().Finished = true; } findExcuted = from each in CurrentTask.CheckList where !each.Finished select each; count = findExcuted.Count(); } if (count == 0)//當全部完成後,繼續下一步 { CurrentTask.CurrentIndex++; CurrentTask.CheckList.Clear(); TaskFlow.Excute(CurrentTask); } }
public static void TaskRemove(CurrentProcessTask Task) { lock (CurrentProcessTasks) { logger.Debug("Delete Task " + Task.TaskName.ToString() + ":" + Task.Id); CurrentProcessTasks.Remove(Task.Id); } }
public static CurrentProcessTask GetTask(string TaskId) { CurrentProcessTask result = null; lock (CurrentProcessTasks) { CurrentProcessTasks.TryGetValue(TaskId, out result); } return(result); }
public void On_TaskJob_Ack(CurrentProcessTask Task) { _TaskReport.On_TaskJob_Ack(Task); }