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(); }
public void StopWorkflow() { if (!disposed) { disposed = true; //_ = LoggingClient.LogInfoAsync("Currently shutting down DEVICE Workflow..."); Console.WriteLine("Currently shutting down DEVICE Workflow..."); currentStateAction?.Dispose(); DestroyComportMonitoring(); DestroyConnectorEvents(); DisconnectFromListener(); ExecuteFinalState(); } }