public static async Task Run() { var state = new LightStatus(LightState.FlashingGreen, LightState.Green, 0, 0); while (true) { Console.Clear(); PrintLight(state.Current); state = GetNextState(state, 100); await Task.Delay(100); } }
private static LightStatus GetNextState(LightStatus status, int elapsedMs) => status switch { { Current : LightState.Red, ElapsedMs : var ms } when elapsedMs + ms >= 5000 => new LightStatus(LightState.Orange, status),