/// <summary> /// 创建任务 /// </summary> /// <param name="groupText">分组选项(Xml配置文件存储路径目录)</param> /// <param name="task">xml任务配置文件</param> public void CreateTask(string groupText, Config.Task task) { Config.TaskUnit unit = new Config.TaskUnit(); unit.TaskConfig = task; unit.ConfigDir = groupText; unit.ConfigPath = ""; this.CreateTask(groupText, unit); }
//增加结果行 private void livTaskView_OnAppendSingleResult(object sender, object[] values) { Config.TaskUnit unit = (Config.TaskUnit)sender; foreach (TaskResultLog page in this.tabContent.TabPages) { if (page.Text.Equals(unit.TaskConfig.Name)) { if (values != null) { page.AppendRowResult(values); } } } }
//任务开始 private void livTaskView_OnTaskStart(object sender, Config.LogEventArgs e) { Config.TaskUnit unit = (Config.TaskUnit)sender; //判断选项卡集合中是否已经存在 foreach (TabPage page in this.tabContent.TabPages) { if (page.Text.Equals(unit.TaskConfig.Name)) { this.tabContent.SelectedTab = page; return; } } //添加一个新的选项卡 Utility.TaskResultLog fromLogPanel = new Utility.TaskResultLog(unit.TaskConfig.Name, unit.TaskConfig.ExtractionRules); this.tabContent.TabPages.Add(fromLogPanel); this.tabContent.SelectedTab = fromLogPanel; }
//追加日志 private void livTaskView_OnAppendSingileLog(object sender, Config.LogEventArgs e) { Config.TaskUnit unit = (Config.TaskUnit)sender; //for (int i = 1; i < this.tabContent.TabPages.Count; i++) //{ // if (tabContent.TabPages[i].Text.Equals(unit.TaskConfig.Name)) // { // ((TaskResultLog)tabContent.TabPages[i]).AppendLogevent(e); // return; // } //} foreach (TaskResultLog page in this.tabContent.TabPages) { if (page.Text.Equals(unit.TaskConfig.Name)) { page.AppendLogevent(e); return; } } }
/// <summary> /// 加载本地xml Task配置文件 /// </summary> private void LoadLocationTaskItem() { string taskRootPath = AppDomain.CurrentDomain.BaseDirectory + "Task"; string[] files = Directory.GetFiles(taskRootPath, "*.xml", SearchOption.AllDirectories); for (int i = 0; i < files.Length; i++) { try { XmlSerializer xs = new XmlSerializer(typeof(Config.Task)); Stream readStream = new FileStream(files[i], FileMode.Open, FileAccess.Read, FileShare.Read); Config.Task task = (Config.Task)xs.Deserialize(readStream); readStream.Close(); readStream.Dispose(); Config.TaskUnit unit = new Config.TaskUnit(); unit.ConfigPath = files[i]; unit.TaskConfig = task; unit.ConfigDir = Directory.GetParent(files[i]).FullName; this._TaskItem.Add(unit); #region 订阅事件 this._TaskItem[_TaskItem.Count - 1].OnTaskStatusChanges += new Config.OnTaskStatusChanges(TaskListView_OnTaskStatusChanges); this._TaskItem[_TaskItem.Count - 1].OnTaskComplete += new Config.OnTaskComplete(TaskListView_OnTaskComplete); this._TaskItem[_TaskItem.Count - 1].OnTaskStart += new Config.OnTaskStart(TaskListView_OnTaskStart); this._TaskItem[_TaskItem.Count - 1].OnTaskPause += new Config.OnTaskPause(TaskListView_OnTaskPause); this._TaskItem[_TaskItem.Count - 1].OnTaskStop += new Config.OnTaskStop(TaskListView_OnTaskStop); this._TaskItem[_TaskItem.Count - 1].OnAppendSingileLog += new Config.OnAppendSingileLog(TaskListView_OnAppendSingileLog); this._TaskItem[_TaskItem.Count - 1].OnAppendSingleResult += new Config.OnAppendSingleResult(TaskListView_OnAppendSingleResult); this._TaskItem[_TaskItem.Count - 1].OnPublishResult += new Config.OnPublishResult(TaskListView_OnPublishResult); #endregion } catch (Exception ex) { throw new Exception(ex.Message); } } }
/// <summary> /// 创建任务 /// </summary> /// <param name="groupText">分组选项(Xml配置文件存储路径目录)</param> /// <param name="taskUnit">任务控制单元</param> public void CreateTask(string groupText, Config.TaskUnit taskUnit) { taskUnit.ConfigDir = groupText; //配置文件目录 //显示任务编辑窗体 FrmTask frmtask = new FrmTask(taskUnit); frmtask.ShowDialog(); /* * 此处控制逻辑有异常,待修改。 *描述:新建一个任务之后,该任务还并未编辑完毕,任务列表视图已经显示了此任务。 *考虑:是否能实现显示模态窗口之后,以下的代码暂停执行? */ //追加新的任务项 if (frmtask._TaskUnit != null && !string.IsNullOrEmpty(frmtask._TaskUnit.TaskConfig.Name)) { _TaskItem.Add(frmtask._TaskUnit); } //重新显示 ShowGroupItem(groupText); }
//任务完成 private void livTaskView_OnTaskComplete(object sender, Config.LogEventArgs e) { Config.TaskUnit unit = (Config.TaskUnit)sender; }
/// <summary> /// 刷新任务项状态 /// </summary> /// <param name="index">任务项索引</param> /// <param name="task">任务项</param> public void RefreshTaskStatus(int index, Config.TaskUnit task) { if (this.InvokeRequired) { this.Invoke(new OnRefreshTaskStatus(RefreshTaskStatus), new object[] { index, task }); } else { #region 更新项状态 if (Items.Count == 0) { return; } for (int i = 0; i < _TaskItem.Count; i++) { for (int j = 0; j < Items.Count; j++) { if (_TaskItem[i].TaskConfig.Name.Equals(Items[j].Text)) { index = j; break; } } } //更新项文字信息 task.TaskConfig.ElapsedTime = DateTime.Now.Subtract(task.TaskConfig.StartingTime).Seconds; this.Items[index].SubItems[1].Text = task.TaskConfig.UrlListManager.PickedUrlsPosition.ToString(); this.Items[index].SubItems[2].Text = task.TaskConfig.UrlListManager.PickedUrlsCount.ToString(); this.Items[index].SubItems[3].Text = task.TaskConfig.UrlListManager.StartingUrlListPosition.ToString(); this.Items[index].SubItems[4].Text = task.TaskConfig.UrlListManager.StartingUrlList.Count.ToString(); this.Items[index].SubItems[5].Text = task.TaskConfig.UrlListManager.HistoryUrlsCount.ToString(); this.Items[index].SubItems[6].Text = task.Results.Rows.Count.ToString(); this.Items[index].SubItems[7].Text = task.TaskConfig.ResultCount.ToString(); this.Items[index].SubItems[8].Text = task.TaskConfig.RepeatedRowsCount.ToString(); this.Items[index].SubItems[9].Text = task.TaskConfig.ErrorRowsCount.ToString(); this.Items[index].SubItems[10].Text = task.TaskConfig.ElapsedTime + " 秒"; this.Items[index].SubItems[11].Text = task.TaskConfig.StartingTime.ToString("yyyy-MM-dd HH:mm:ss"); //开始时间 //刷新图标 switch (task.Action) { case Config.Action.Finish: this.Items[index].ImageKey = "editmin.png"; break; case Config.Action.Ready: this.Items[index].ImageKey = "taskmin.png"; break; case Config.Action.Start: this.Items[index].ImageKey = "startmin.png"; break; case Config.Action.Pause: this.Items[index].ImageKey = "pausemin.png"; break; case Config.Action.Stop: this.Items[index].ImageKey = "stopmin.png"; break; case Config.Action.Running: this.Items[index].ImageKey = "pausemin.png"; break; } #endregion } }
//状态改变 private void TaskListView_OnTaskStatusChanges(object sender, Config.Action action) { Config.TaskUnit unit = (Config.TaskUnit)sender; RefreshTaskStatus(0, unit); //刷新任务状态 }
/// <summary> /// 创建任务 /// </summary> /// <param name="groupText">分组选项(Xml配置文件存储路径目录)</param> /// <param name="task">xml任务配置文件</param> public void CreateTask(string groupText, Config.Task task){ Config.TaskUnit unit = new Config.TaskUnit(); unit.TaskConfig = task; unit.ConfigDir = groupText; unit.ConfigPath = ""; this.CreateTask(groupText, unit); }