Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="cmd"></param>
        /// <param name="owningTask"></param>
        /// <remarks>
        /// 可能包含读取并清除本地数据的后续指示(在Task.Tag中)
        /// </remarks>
        private void ProcessReadTotalCountCmd(ReadTotalCountCommand cmd, Task owningTask)
        {
            if (owningTask.Tag != null)
            {
                object[] tags = owningTask.Tag as object[];
                if (tags != null && tags.Length == 2)
                {
                    TagType tagType = (TagType)tags[0];
                    XGTask  xgtask  = (XGTask)tags[1];


                    //Immediate task strategy 被加到tasks的最前端,所以要先加入,一般在读取完所有的记录后清空。
                    //
                    RemoveAllCommand clearCmd  = new RemoveAllCommand(cmd.Station as XGStation);
                    Task             clearTask = new Task(clearCmd, new ImmediateTaskStrategy());
                    clearTask.Tag = xgtask;
                    clearTask.BeforeExecuteTask += new EventHandler(clearTask_BeforeExecuteTask);
                    Singles.S.TaskScheduler.Tasks.Add(clearTask);

                    for (int i = 0; i < cmd.TotalCount; i++)
                    {
                        ReadRecordCommand rdcmd = new ReadRecordCommand(cmd.Station as XGStation, i + 1);
                        Task t = new Task(rdcmd, new ImmediateTaskStrategy());
                        Singles.S.TaskScheduler.Tasks.Add(t);
                    }
                }
            }
        }
Example #2
0
        //public int MatchRecord( XGAutoReportData  record )
        public int MatchRecord(XGData data)
        {
            ArgumentChecker.CheckNotNull(data);
            if (_tasks == null)
            {
                return(0);
            }

            int matchedCount = 0;

            for (int i = 0; i < _tasks.Count; i++)
            {
                XGTask task = _tasks[i];
                if (task.IsActive &&
                    !task.IsComplete &&
                    task.MatchXGData(data))
                {
                    //task.XgTaskResult  = XGTaskResult.CreateSuccessResult( task, record.DateTime );
                    task.XgTaskResult = data;
                    task.IsComplete   = true;
                    matchedCount++;
                }
            }
            return(matchedCount);
        }
Example #3
0
 /// <summary>
 /// 检查巡更任务,检查巡更任务列表中的每一个任务,如果DateTime.Now处于该任务的活动时间段,则激活该任务。
 /// </summary>
 public void CheckTasks()
 {
     for (int i = 0; i < _tasks.Count; i++)
     {
         XGTask task = _tasks[i];
         task.IsActive = !task.IsOutTime(DateTime.Now);
     }
 }
Example #4
0
        private void clearTask_BeforeExecuteTask(object sender, EventArgs e)
        {
            //RemoveAllCommand c = sender as RemoveAllCommand ;
            Task t = sender as Task;

            ArgumentChecker.CheckNotNull(t);
            if (t.Tag != null)
            {
                XGTask xgt = t.Tag as XGTask;
                xgt.ReadLocalXgDataComplete();
            }
        }
Example #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public XGTask[] MatchXGData(XGData data)
        {
            System.Collections.ArrayList list = new System.Collections.ArrayList();
            if (data == null)
            {
                return(null);
            }
            for (int i = 0; i < Count; i++)
            {
                XGTask task = this[i];
                if (task.MatchXGData(data))
                {
                    task.XgTaskResult = data;
                    task.IsComplete   = true;
                    list.Add(task);
                }
            }

            return((XGTask[])list.ToArray(typeof(XGTask)));
        }
Example #6
0
 public int Add(XGTask task)
 {
     return(base.InternalAdd(task));
 }