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