static void Main(string[] args) { IConfiguration config = new ConfigurationBuilder() .AddJsonFile("appsetting.json", true, true) .Build(); var carWasher = new CarWasher(config); carWasher.Initialize(); System.Threading.Timer visitorTimer = new System.Threading.Timer(OnVisitorArrived, carWasher, TimeSpan.Zero, new TimeSpan(0, 0, Int32.Parse(config["VisitorArrivalTimeGapSeconds"]))); Console.WriteLine("Press ESC to stop and S for statistics."); while (!(Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape)) { var key = Console.ReadKey(true).Key; if (key == ConsoleKey.S) { var stats = GetStatistics(carWasher); Console.WriteLine($"Total Generated Visitors = {stats.GeneratedVisitors}"); Console.WriteLine($"Total Processed Visitors = {stats.ProcessedVisitors}"); Console.WriteLine($"Total Rejected Visitors = {stats.RejectedVisitors}"); Console.WriteLine($"Average Processing Time = {stats.AverageProcessingTime}"); Console.WriteLine($"Average Waiting Time = {stats.AverageWaitingTime}"); Console.WriteLine($"Average Total Time = {stats.AverageTotalTime}"); } else if (key == ConsoleKey.Escape) { break; } } visitorTimer.Dispose(); }