public void ManagePatients() { while (Running) { List <Patient> patients = new List <Patient>(); patients.AddRange(TakeNextQueue()); foreach (Patient p in patients) { Bed bed = FindBed(p); if (bed != null) { bed.Busy = true; p.Bed = bed; p.Room = bed.Room; GivePatientAPath(p); lock (patientsToNavigateLock) { PatientsToNavigate.Add(p); } RemoveWaitingPatient(p); } } Thread.Sleep(5000); //sleep 5 seconds } }
public void NavigatePatients() { List <Patient> patientsToRemove = new List <Patient>(); lock (patientsToNavigateLock) { foreach (Patient p in PatientsToNavigate) { if (p.GoToRoom()) { Treat(p); patientsToRemove.Add(p); p.StartNavigate = DateTime.Now; } } foreach (Patient p in patientsToRemove) { PatientsToNavigate.Remove(p); } } }