private async Task AdvanceActionWithState(IDeviceStateAction oldState) { IDeviceStateAction newState = stateActionController.GetNextAction(oldState); if (savedStackState.Count > 0) { newState.SetState(savedStackState.Pop()); } oldState.Dispose(); currentStateAction = newState; RaiseStateChange(oldState.WorkflowStateType, newState.WorkflowStateType); if (StateActionRules.NeedsDeviceRecovery) { if (currentStateAction.DoDeviceDiscovery()) { StateActionRules.NeedsDeviceRecovery = false; } } await newState.DoWork(); }
private async Task AdvanceStateActionTransition(IDeviceStateAction oldState) { IDeviceStateAction newState = stateActionController.GetNextAction(oldState); if (savedStackState.Count > 0) { newState.SetState(savedStackState.Pop()); } oldState.Dispose(); currentStateAction = newState; LogStateChange(oldState.WorkflowStateType, newState.WorkflowStateType); await newState.DoWork(); }
private void ExecuteFinalState() { using IDeviceStateAction lastAction = stateActionController.GetFinalState(); lastAction.DoWork().Wait(2000); }