Ejemplo n.º 1
0
        protected override sealed void DoWork(DoWorkDTO dto)
        {
            var list          = GetUnitList(dto).ToList();
            int index         = 0;
            int count         = list.Count();
            int count_success = 0;
            int count_failure = 0;
            int count_error   = 0;

            ReportState(new ReportStateDTO()
            {
                StateDescription = string.Format("共读取到{0}个待处理项,开始处理...", count)
            });
            foreach (T current in list)
            {
                index++;
                UnitHandleResultEnum unitHandleType = UnitHandleResultEnum.Success;
                try
                {
                    CommonReturnType result = UnitHandle(current, dto);

                    if (!result.IsSuccess)
                    {
                        unitHandleType = UnitHandleResultEnum.Failure;
                        count_failure++;
                        Log(new LogDTO()
                        {
                            Text = string.Format("{0}:失败:{1}", current.Key, result.Message)
                        });
                    }
                    else
                    {
                        unitHandleType = UnitHandleResultEnum.Success;
                        count_success++;
                    }
                }
                catch (Exception ex)
                {
                    unitHandleType = UnitHandleResultEnum.Error;
                    count_error++;
                    Log(new LogDTO()
                    {
                        Text = string.Format("{0}:异常:{1}", current.Key, ex.Message)
                    });
                }

                ReportState(new ReportStateDTO()
                {
                    StateDescription = string.Format("第{0}/{1}个${2}${3}__当前共成功{4}个,失败{5}个,异常{6}个", index, count, current.Key, GetUnitHanleResultStr(unitHandleType), count_success, count_failure, count_error)
                });
            }

            Log(new LogDTO()
            {
                Text = string.Format("共成功{0}个,失败{1}个,异常{2}个", count_success, count_failure, count_error)
            });
        }
Ejemplo n.º 2
0
        private void StartTask(DoWorkDTO doworkdto)
        {
            try
            {
                DateTime startTime = DateTime.Now;
                ReportState(new ReportStateDTO()
                {
                    StateDescription = string.Format("开始@{0}...", startTime.ToString("yyyy:MM:dd HH:mm:ss"))
                });
                Log(new LogDTO()
                {
                    Text = string.Format("开始@{0}...", DateTime.Now.ToString("yyyy:MM:dd HH:mm:ss"))
                });
                if (_executePrepareDelegate != null)
                {
                    _executePrepareDelegate();
                }
                DoWork(doworkdto);
                if (_executeOverDelegate != null)
                {
                    _executeOverDelegate();
                }
                DateTime endTime = DateTime.Now;
                ReportState(new ReportStateDTO()
                {
                    StateDescription = string.Format("结束@{0}...", endTime.ToString("yyyy:MM:dd HH:mm:ss"))
                });
                Log(new LogDTO()
                {
                    Text = string.Format("结束@{0}...", DateTime.Now.ToString("yyyy:MM:dd HH:mm:ss"))
                });
            }
            catch (Exception ex)
            {
                if (!_isLogException)
                {
                    throw;
                }

                string err = ex.Message;
                ReportState(new ReportStateDTO()
                {
                    StateDescription = err
                });
                if (_executeOverDelegate != null)
                {
                    _executeOverDelegate();
                }
                Log(new LogDTO()
                {
                    Text = err
                });
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 执行器启动,默认为异步执行,可以通过修改IsAsynchronous属性改为同步
        /// </summary>
        /// <param name="dto"></param>
        public void Start(StartDTO dto)
        {
            //准备日志文件
            InitLog(dto.LogFullPath);
            //启动
            DoWorkDTO doworkdto = dto.DoWorkObj;

            //判断是同步执行还是异步执行
            if (_isAsynchronous)
            {
                Thread mythread = new Thread
                                  (
                    () =>
                {
                    StartTask(doworkdto);
                }
                                  );
                mythread.Start();
            }
            else
            {
                StartTask(doworkdto);
            }
        }
Ejemplo n.º 4
0
 protected abstract void DoWork(DoWorkDTO dto);
Ejemplo n.º 5
0
 protected abstract List <T> GetUnitList(DoWorkDTO dto);
Ejemplo n.º 6
0
 protected abstract CommonReturnType UnitHandle(T unit, DoWorkDTO dto);