Exemple #1
0
        public virtual void ExecDoEntry(StateEntryEventArgs seea)
        {
            StateMachine sm = seea.Sender;

            if (sm.FlageNormalStatus)
            {
                sm.ChangeState(this);
                DoEntry(seea);
            }
        }
Exemple #2
0
        protected void DoEntry(StateEntryEventArgs seea)
        {
            if (OnEntry == null)
            {
                return;
            }
            //if (OnEntry.GetInvocationList().Count() > 1) throw new ArgumentException("不應有2個以上的OnEntry");

            this.OnEntry(this, seea);

            //foreach (var invo in OnEntry.GetInvocationList())
            //{
            //    var loopSeea = new StateEntryEventArgs(seea.sm);
            //    invo.DynamicInvoke(this, loopSeea);
            //}
        }
        //override do entry function
        public override void ExecDoEntry(StateEntryEventArgs senea)
        {
            StateMachine sm = senea.Sender;

            sm.ChangeState(this);
            //sm.SmSnapShot();TODO: 要不要Snap應由專案決定, 不由Library決定

            DoEntry(senea);
            if (ReasonOfState.StateAlarmId != null)
            {
                sm.PopupAlarm(sm, EnumStateMachineMsgType.StateMachineException, ReasonOfState.StateAlarmId.ToString());
            }
            else
            {
                throw new StateMachineException("AlarmId is fail string");
            }
        }
Exemple #4
0
        public virtual bool RunTrigger(IStateParam param, StateMachine sm)
        {
            //if (!sm.CheckState(FromState))
            //{
            //    throw new NotCurrentStateException(sm.GetType().ToString() + " : current is " + sm.CurrentState.StateName + ",not Transition from: " + FromState.StateName);
            //}

            StateExitEventArgs seea = new StateExitEventArgs();

            try { FromState.DoExit(seea); }
            catch (Exception ex) { throw ex; }

            try { runAct.Invoke(sm, null); }
            catch (Exception ex) { throw ex; }

            StateEntryEventArgs senea = new StateEntryEventArgs(sm);

            try { ToState.ExecDoEntry(senea); }
            catch (Exception ex) { throw ex; }


            return(true);
        }
 public override bool RunTrigger(IStateParam param, StateMachine sm)
 {
     try
     {
         StateExitEventArgs seea = new StateExitEventArgs();
         FromState.DoExit(seea);
     }
     catch
     {
         throw new StateMachineFatelException(FromState.StateName + ": get exit fail event");
     }
     runAct.Invoke(sm, null);
     try
     {
         StateEntryEventArgs seea = new StateEntryEventArgs(sm);
         ToState.ExecDoEntry(seea);
     }
     catch
     {
         throw new StateMachineFatelException(ToState.StateName + ": get entry fail event");
     }
     return(true);
 }