Exemplo n.º 1
0
        private void trac_BeforeExecuteTask(object sender, EventArgs e)
        {
            // 通知XGTask Read xg local data complete.
            //
            Task t = (Task)sender;

            if (t.Tag != null)
            {
                XGTask xgtask = (XGTask)t.Tag;
                xgtask.ReadLocalXgDataComplete();
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 处理执行完毕的命令
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TaskScheduler_Executed(object sender, EventArgs e)
        {
            TaskScheduler sch = sender as TaskScheduler;

            if (sch == null)
            {
                Debug.Fail("TaskScheduler_Executed(), sender == null");
            }
            AddLog("TC: " + sch.Tasks.Count);
            Task   at = sch.ActiveTask;
            string s  = string.Format("send: {0}, {1}\r\nrece: {2}, {3}",
                                      at.LastSendDateTime, CT.BytesToString(at.LastSendDatas),
                                      at.LastReceivedDateTime, CT.BytesToString(at.LastReceived));

            AddLog(s);
            s = at.LastCommResultState.ToString();
            AddLog(s);
            CommCmdBase cmd = sch.ActiveTask.CommCmd;

            // read total count cmd
            //
            if (cmd is ReadTotalCountCommand)
            {
                ReadTotalCountCommand c = cmd as ReadTotalCountCommand;

                AddLog("LocalTotalCount: " + c.TotalCount);
                AddLog(c.Station.StationName + c.Station.Address);

                // need read all record and clear xg ctrler data
                //
                if (at.Tag != null)
                {//&&
                    // (string)at.Tag == TagType.OP_ReadAndClearXgData.ToString() )
                    //{
                    object[] tags    = (object[])at.Tag;
                    TagType  tagType = (TagType)tags[0];
                    XGTask   xgtask  = (XGTask)tags[1];

                    RemoveAllCommand clearCmd  = new RemoveAllCommand(c.Station as XGStation);
                    Task             clearTask = new Task(clearCmd, new ImmediateTaskStrategy());
                    Singles.S.TaskScheduler.Tasks.Add(clearTask);

                    for (int i = 0; i < c.TotalCount; i++)
                    {
                        ReadRecordCommand rdcmd = new ReadRecordCommand(c.Station as XGStation, i + 1);
                        Task t = new Task(rdcmd, new ImmediateTaskStrategy());
                        Singles.S.TaskScheduler.Tasks.Add(t);
                    }

                    // ???
                    //
                    //RemoveAllCommand rac = new RemoveAllCommand( c.Station as XGStation );
                    //Task trac = new Task( "rdall", rac, new ImmediateTaskStrategy() );
                    //trac.Tag = xgtask;
                    //trac.BeforeExecuteTask +=new EventHandler(trac_BeforeExecuteTask);
                    //Singles.S.TaskScheduler.Tasks.Add( trac );
                }
            }

            // read record cmd
            //
            if (cmd is ReadRecordCommand)
            {
                ReadRecordCommand rdcmd = cmd as ReadRecordCommand;
                AddLog("record index: " + rdcmd.RecordIndex);

                if (rdcmd.XGData != null)
                {
                    // 2007.03.11 Modify
                    //
                    //XGDB.InsertXGData( rdcmd.XGData );
                    XGDB.InsertXGData(cmd.Station.DestinationIP, rdcmd.XGData);
                }

                XGTask[] tasks = Singles.S.XGScheduler.Tasks.MatchXGData(rdcmd.XGData);
                foreach (XGTask task in tasks)
                {
                    task.IsComplete = true;
                }
            }
        }