Exemplo n.º 1
0
        /// <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;
            }
        }
Exemplo n.º 2
0
        /// <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(); //启动线程
        }
Exemplo n.º 3
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="task"></param>
 public StepSegment(TaskProcess task)
 {
     this.task = task;
 }