private static void BuildBusyState(ChildModel model, MachineEditor <ChildState> builder) { var busy = builder.EditState(ChildState.Busy); // Transition from BUSY to READY var busyToReady = busy.TransitionTo(ChildState.Ready) .TriggerWithEvent <Timer, ElapsedEventHandler, ElapsedEventArgs>(model.RandomTimer, nameof(model.RandomTimer.Elapsed)) .HaveEffect("Run Timer", (di) => model.RunTimer()); }
public static MachineEditor <ChildState> BuildStateMachine(this ChildModel model, StateMachine <ChildState> machine) { var builder = MachineEditor <ChildState> .Edit(machine); machine.SetInitialState(ChildState.Ready); BuildReadyState(model, builder); BuildBusyState(model, builder); return(builder); }
public DemoModel(ILog logger) { _logger = logger; LoopCount = 3; BoolFunc = () => false; for (int i = 0; i < 5; i++) { var child = new ChildModel((i + 1).ToString(), _synchronizationContext, logger); Children.Add(child); child.StateMachine.StateChanged += HandleChildStateChanged; } CreateStateMachine(); }