public bool WaitForRoom(Boss boss) { Random rand = new Random(); int patience = rand.Next(0, 41); bool entered = false; Console.WriteLine(this.name + " Poczekam " + patience/2 + " minut na wolne miejsce w poczekalni"); System.Timers.Timer timer = new System.Timers.Timer(); timer.Elapsed += (sender, e) => { patience--; if(patience > 0) { entered = HandleRoom(boss); if(entered == true) { Console.WriteLine(this.name + " Zanim wyszedłem pojawiło się miejsce w poczekalni. Wchodzę do poczekalni."); timer.Stop(); } } else { Console.WriteLine(this.name + " Skończyła mi się cierpliwość. Wychodzę."); entered = false; timer.Stop(); } }; timer.Interval = 500; timer.Enabled = true; return entered; }
private static void CreateClient(Boss boss, int counter) { Client client = new Client(counter); if(client.manicure_wanted) Console.WriteLine("Przybył klient " + client.name + " na strzyżenie i manicure"); else Console.WriteLine("Przybył klient " + client.name + " tylko na strzyżenie"); boss.TakeClient(client); }
static void Main(string[] args) { int counter = -1; Logic logic = new Logic(); logic.TakeNumbers(out logic.liczbaFryzjerow, out logic.liczbaManikiurzystek, out logic.pojemnoscPoczekalni); Console.WriteLine("Licbza fryzjerów: " + logic.liczbaFryzjerow); Console.WriteLine("Liczba manikiurzystek: " + logic.liczbaManikiurzystek); Console.WriteLine("Pojemność poczekalni: " + logic.pojemnoscPoczekalni); Boss boss = new Boss(logic.liczbaFryzjerow, logic.liczbaManikiurzystek, logic.pojemnoscPoczekalni); System.Timers.Timer timer = new System.Timers.Timer(); timer.Elapsed += (sender, e) => { counter++; HandleTimerElapsed(boss, counter); }; timer.Interval = 1000; timer.Enabled = true; if (Console.Read() == 'q') timer.Enabled = false; Console.ReadKey(); }
static void HandleTimerElapsed(Boss boss, int counter) { CreateClient(boss, counter); }
bool HandleRoom(Boss boss) { if(boss.waiting_room.Count < boss.waiting_room.Capacity - 1) { boss.waiting_room.Add(this); return true; } else { return false; } }