public void Lecz() { Random random = new Random(); while (true) { Pacjent pacjent = ObsluzPacjenta(); Form1.RemoveFromListView(kolejkaList, 0); Form1.AddToListView(obslugiwanyList, pacjent.getName()); Console.WriteLine($"[{nazwa}] Leczy {pacjent.getNumer()} z podejrzeniem {pacjent.getChoroba().nazwa}"); Thread.Sleep(random.Next(6000)); Form1.RemoveFromListView(obslugiwanyList, 0); if (random.NextDouble() < 0.4) { int nrBadania = random.Next(badania.Count); if (pacjent.ciezkiPrzypadek) { badania[nrBadania].CzekajWKolejcePozaKolejnoscia(pacjent); } else { badania[nrBadania].CzekajWKolejce(pacjent); } Console.WriteLine($"[{nazwa}] Wysłał {pacjent.getNumer()} do {badania[nrBadania].getNazwa()}"); } else { Console.WriteLine($"[{nazwa}] Wyleczył {pacjent.getNumer()} z {pacjent.getChoroba().nazwa}"); } } }
public void CzekajWKolejce(Pacjent pacjent) { lock (_lock) { kolejka.Enqueue(pacjent); Form1.AddToListView(kolejkaList, pacjent.getName()); Monitor.Pulse(_lock); } }
public void PrzyjmijPacjenta(Choroba choroba, bool ciezkiPrzypadek) { lock (_lock) { Pacjent pacjent = new Pacjent(pacjenci, choroba, ciezkiPrzypadek); Console.WriteLine($"[Rejestracja] Przyjeto pacjenta {pacjenci} z podejrzeniem {pacjent.getChoroba().nazwa}"); kolejkaRejestracja.Enqueue(pacjent); Form1.AddToListView(rejestracjaView, pacjent.getName()); pacjenci++; Monitor.Pulse(_lock); } }
public void CzekajWKolejcePozaKolejnoscia(Pacjent pacjent) { lock (_lock) { var items = kolejka.ToArray(); kolejka.Clear(); Form1.ClearListView(kolejkaList); kolejka.Enqueue(pacjent); Form1.AddToListView(kolejkaList, pacjent.getName()); foreach (var item in items) { kolejka.Enqueue(item); Form1.AddToListView(kolejkaList, item.getName()); } Monitor.Pulse(_lock); } }
public void Dzialaj() { Random random = new Random(); while (true) { Pacjent pacjent = BadajPacjenta(); Form1.RemoveFromListView(kolejkaList, 0); Form1.AddToListView(obslugiwanyList, pacjent.getName()); Console.WriteLine($"[{nazwa}] Badanie {pacjent.getNumer()}"); Thread.Sleep(random.Next(6000)); int nrLekarz = 0; if (pacjent.getChoroba().typ == "kardiologiczna") { nrLekarz = 0; } else if (pacjent.getChoroba().typ == "psychologiczna") { nrLekarz = 1; } else if (pacjent.getChoroba().typ == "ortopedyczna") { nrLekarz = 2; } if (pacjent.ciezkiPrzypadek) { Form1.lekarze[nrLekarz].CzekajWKolejcePozaKolejnoscia(pacjent); } else { Form1.lekarze[nrLekarz].CzekajWKolejce(pacjent); } Form1.RemoveFromListView(obslugiwanyList, 0); Console.WriteLine($"[{nazwa}] {pacjent.getNumer()} -> {Form1.lekarze[nrLekarz].getNazwa()}"); } }