Example #1
0
		public Sample()
		{
			InitializeComponent();

			stateMachineBuilder = new StateMachineBuilder();
			stateMachineBuilder.AddState(States.Green)
				.TransitionOn(Events.Change, States.Yellow)
				.OnEnter(s => Invoker(() => pnlGreen.BackColor = GreenOn))
				.OnExit(s => Invoker(() => pnlGreen.BackColor = GreenOff))
				.Timeout(3000, States.Yellow)
				.InitialState();
			stateMachineBuilder.AddState(States.Yellow)
				.TransitionOn(Events.Change, States.Red)
				.Timeout(3000, States.Red)
				.OnEnter(s => Invoker(() => pnlYellow.BackColor = YellowOn))
				.OnExit(s => Invoker(() => pnlYellow.BackColor = YellowOff));
			stateMachineBuilder.AddState(States.Red)
				.TransitionOn(Events.Change, States.Green)
				.Timeout(3000, States.Green)
				.OnEnter(s => Invoker(() => pnlRed.BackColor = RedOn))
				.OnExit(s => Invoker(() => pnlRed.BackColor = RedOff));

			stateMachine = new StateMachine("StopLight", stateMachineBuilder);
			stateMachine.Asynchronous();
		}