/// <summary> /// 响应定时器 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Timer_Elapsed(object sender, ElapsedEventArgs e) { Start(); if (IsBusy) { return; } try { IsBusy = true; using (DatabaseHelper helper = DatabaseHelper.CreateByConnName("GISETL")) { //20200915 var todotasklist = helper.ExecuteReader_ToList($"select * from etl_todo_task where FINISHED_STATE='0'"); foreach (var tttask in todotasklist) { string task_id = tttask["TASK_ID"].ToString(); TaskProcess process = new TaskProcess(task_id); if (process.Execute()) { string sql = $"update etl_todo_task set FINISHED_STATE='1' where TASK_ID='{task_id}'"; helper.ExecuteNonQuery(sql); } else { string sql = $"update etl_todo_task set FINISHED_STATE='2' where TASK_ID='{task_id}'"; helper.ExecuteNonQuery(sql); } } var taskLst = helper.ExecuteReader_ToList($"select * from v_etl_task where state='1'"); foreach (var task in taskLst) { string REPEAT_MODE = task["REPEAT_MODE"].ToString(); if ( REPEAT_MODE == "1" && CheckNeedExecute_1(task) || REPEAT_MODE == "2" && CheckNeedExecute_2(task) || REPEAT_MODE == "3" && CheckNeedExecute_3(task) ) { Execute(task); } } } } catch (Exception ex) { Logger.log("TaskMonitor/Timer_Elapsed", ex); } finally { IsBusy = false; } }
/// <summary> /// 执行任务 /// </summary> /// <param name="dict"></param> void Execute(Dictionary <string, object> task) { string task_id = task["ID"].ToString(); // todo: 此处创建线程代码直接复制于网上,可能需要优化。比如进行线程管理,限制最大线程数等等 Thread thread = new Thread(new ParameterizedThreadStart(delegate { try { TaskProcess process = new TaskProcess(task_id); process.Execute(); } catch (Exception ex) { Logger.log("TaskMonitor.Execute", ex); } })); //创建线程 thread.Start(); //启动线程 }
/// <summary> /// 构造函数 /// </summary> /// <param name="task"></param> public StepSegment(TaskProcess task) { this.task = task; }