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);
        }
示例#3
0
        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();
        }