示例#1
0
        /// <summary>
        /// 執行清單
        /// </summary>
        private void CallScheduelBaseII()
        {
            ScheduleBase schedule = GetNextJob();//去RabbitMQ 取下一個Message

            if (schedule != null)
            {
                //紀錄開始動作
                ScheduleTaskModule.Start(schedule.Task.ID, string.Format("{0} Start, Run Server:{1}", schedule.Task.ScheduleType.ToString(), _ScheduleServer));
                lock (_Lock)
                {
                    _Schedules.Add(schedule);
                    schedule._OnFinished += new ScheduleBase.FinishedHandler(ScheduleFinish);//實作Schedule  Finish


                    ThreadCounter++;
                    if (Debugger.IsAttached)
                    {
                        schedule.GO();//測試用
                    }
                    else
                    {
                        Thread thread = new Thread(schedule.GO);
                        thread.Start();
                    }
                }
            }
            else
            {
                //有可能無訊息了,也有可能訊息本身有錯誤格式
                ScheduleTaskModule.NoMessage(_IntervalSec);
                System.Threading.Thread.Sleep(_IntervalSec * 1000);
            }
        }