public void StopAllBatchTasks() { for (int i = 0; i < this.BatchTasks.Count; i++) { BatchTask task = this.BatchTasks[i]; task.Stop(); } }
public int GetBatchTaskInfo(string strName, BatchTaskInfo param, out BatchTaskInfo info, out string strError) { strError = ""; info = null; BatchTask task = this.BatchTasks.GetBatchTask(strName); // 任务本来就不存在 if (task == null) { strError = "任务 '" + strName + "' 不存在"; return(-1); } info = task.GetCurrentInfo(param.ResultOffset, param.MaxResultBytes); return(1); }
// 按照命令启动一个批处理任务(不是自动启动) public int StartBatchTask(string strName, BatchTaskInfo param, out BatchTaskInfo info, out string strError) { strError = ""; info = null; // 2007/12/18 if (this.HangupReason == HangupReason.LogRecover) { strError = "当前系统正处在LogRecover挂起状态,无法启动新的批处理任务"; return(-1); } BatchTask task = this.BatchTasks.GetBatchTask(strName); // 创建新的任务 if (task == null) { /* * if (strName == "预约到书管理") * task = new ArriveMonitor(this, strName); * else if (strName == "日志恢复") * task = new OperLogRecover(this, strName); * else if (strName == "跟踪DTLP数据库") * task = new TraceDTLP(this, strName); * else if (strName == "正元一卡通读者信息同步") * task = new ZhengyuanReplication(this, strName); * else if (strName == "迪科远望一卡通读者信息同步") * task = new DkywReplication(this, strName); * else if (strName == "超期通知") * task = new ReadersMonitor(this, strName); * else if (strName == "消息监控") * task = new MessageMonitor(this, strName); * else * { * strError = "系统不能识别任务名 '" + strName + "'"; * return -1; * } * */ strError = "系统不能识别任务名 '" + strName + "'"; return(-1); try { this.BatchTasks.Add(task); } catch (Exception ex) { strError = ExceptionUtil.GetAutoText(ex); return(-1); } } else { bool bOldStoppedValue = task.Stopped; // 激活 2007/10/10 task.eventActive.Set(); task.ManualStart = true; // 表示为命令启动 if (bOldStoppedValue == false) { strError = "任务 " + task.Name + " 已经在运行中,不能重复启动。本次操作激活了这个任务。"; return(-1); } } // 执行日志恢复任务前,需要先中断正在执行的其他任何任务 // TODO: 日志恢复 任务结束后,原先中断的那些任务并不会自动去启动。需要系统管理员手动重新启动一次Application if (strName == "日志恢复") { StopAllBatchTasks(); } task.ManualStart = true; // 表示为命令启动 task.StartInfo = param.StartInfo; task.ClearProgressFile(); // 清除进度文件内容 task.StartWorkerThread(); // 激活 2007/10/10 task.eventActive.Set(); info = task.GetCurrentInfo(param.ResultOffset, param.MaxResultBytes); return(0); }