using FiniteStateMachine.Core; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace FiniteStateMachine { public partial class Form1 : Form { StateContext SC; public Form1() { InitializeComponent(); SC = new StateContext(1000); SC.SensorStateChanged += SC_SensorStateChanged; } private void SC_SensorStateChanged(object sender, SensorStateChangedEventArgs e) { if (SC.CurrentSensorState == StateContext.SensorState.WORKING) { SC.CurrentSensorState = e.NewState; SC.Working(); } } private void btnIN_Click(object sender, EventArgs e) { HandleSensorStateChange(StateContext.SensorState.IN); } private void btnSTART_Click(object sender, EventArgs e) { HandleSensorStateChange(StateContext.SensorState.IN); } private void btnOUT_Click(object sender, EventArgs e) { HandleSensorStateChange(StateContext.SensorState.IN); } private void HandleSensorStateChange(StateContext.SensorState newState) { if (SC.CurrentSensorState == StateContext.SensorState.WORKING) { SC.CurrentSensorState = newState; SC.Working(); } } private void Form1_Load(object sender, EventArgs e) { } private void btnWorking_Click(object sender, EventArgs e) { SC.CurrentSensorState = StateContext.SensorState.WORKING; HandleSensorStateChange(StateContext.SensorState.WORKING); } } }