private void RaiseOnExitEvent(StateToken stateToken, object data) { if (CurrentState != null) { var stateExitEventArgs = new StateExitEventArgs(stateToken, data); isPerformActionLocked = true; try { CurrentState.OnExit(stateExitEventArgs); } finally { isPerformActionLocked = false; } } }
/// <summary> /// Called when the state machine exits the current state. /// </summary> /// <param name="e">Custem event arguments.</param> protected internal virtual void OnExit(StateExitEventArgs e) { Exit?.Invoke(this, EventArgs.Empty); }