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(); } }
/// <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; } } }