Beispiel #1
0
        /// <summary>Enter this State</summary>
        public void Enter(T Entity)
        {
            //on enter, clear out last execute time, exit time, finish time
            LastExecuteTime = DateTime.MinValue;
            ExitTime        = DateTime.MinValue;
            FinishTime      = DateTime.MinValue;

            //Raise Entering event
            if (Entering != null)
            {
                Entering(this, StateEventArgs <T> .GetArgs(Entity));
            }

            //Update Enter Date/time
            EnterTime = DateTime.Now;

            //call DoEnter
            DoEnter(Entity);

            //Raise Entered
            if (Entered != null)
            {
                Entered(this, StateEventArgs <T> .GetArgs(Entity));
            }

            // Last call. Change status
            Status = StateConditions.STARTED;
        }
Beispiel #2
0
        /// <summary>Execute State</summary>
        public void Execute(T Entity)
        {
            //Raise Executing event
            if (Executing != null)
            {
                Executing(this, StateEventArgs <T> .GetArgs(Entity));
            }

            //Update last executed Date/time
            LastExecuteTime = DateTime.Now;

            //call DoExecute
            DoExecute(Entity);

            //Raise Executed
            if (Executed != null)
            {
                Executed(this, StateEventArgs <T> .GetArgs(Entity));
            }
        }
Beispiel #3
0
        /// <summary>Finish State</summary>
        public void Finish(T Entity)
        {
            //Raise Finishing event
            if (Finishing != null)
            {
                Finishing(this, StateEventArgs <T> .GetArgs(Entity));
            }

            //call DoFinish
            DoFinish(Entity);

            //Raise Finished
            if (Finished != null)
            {
                Finished(this, StateEventArgs <T> .GetArgs(Entity));
            }

            //Update Finish date/time at the end
            FinishTime = DateTime.Now;

            // Last call. Change status
            Status = StateConditions.FINISHED;
        }
Beispiel #4
0
        /// <summary>Exit State</summary>
        public void Exit(T Entity)
        {
            //Raise Exiting event
            if (Exiting != null)
            {
                Exiting(this, StateEventArgs <T> .GetArgs(Entity));
            }

            //call DoExecute
            DoExit(Entity);

            //Raise Exited
            if (Exited != null)
            {
                Exited(this, StateEventArgs <T> .GetArgs(Entity));
            }

            //Update Exit date/time at the end
            ExitTime = DateTime.Now;

            // Last call. Change status
            Status = StateConditions.TERMINATED;
        }
Beispiel #5
0
        public static StateEventArgs <T> GetArgs(T Entity)
        {
            var args = new StateEventArgs <T>(Entity);

            return(args);
        }