//Event handlers protected void DoorOpened(object sender, EventArgs e) { switch (_doorControlStates) { //Door should be opening here case DoorControlStates.DoorOpening: //Change state _doorControlStates = DoorControlStates.DoorClosing; //Close door _door.Close(); //End case break; //In case of breach where door is expected closed case DoorControlStates.DoorClosed: //Change state _doorControlStates = DoorControlStates.DoorAlarm; //Raise alarm _alarm.Raise(); //End case break; } }