public Bilet ZdobadzNumer(Matka matka) { Bilet bilet; Thread.Sleep(Opoznienie * TimeBase); ListaSprawDostep.WaitOne(); switch (matka.ZwrocTyp()) { case Matka.Sprawa.Typ.Administracja: bilet = new Bilet('A', OstatniNumerek); ListaSpraw.Add(bilet); break; case Matka.Sprawa.Typ.Finanse: bilet = new Bilet('F', OstatniNumerek); ListaSpraw.Add(bilet); break; default: bilet = new Bilet('U', OstatniNumerek); ListaSpraw.Add(bilet); break; } OstatniNumerek++; ListaMatek.Add(matka); ListaSprawDostep.ReleaseMutex(); zajety.ReleaseMutex(); return(bilet); }
public void Update() { if (okienko == null) { if (SimulationRunning) { ZnajdzOkienko(); } else { KoniecPracy = true; } } if (okienko != null) { switch (okienko.ZwrocStatus()) { case Okienko.Status.Pusty: if (SimulationRunning) { if (SprawdzPrzerwe(60)) { NowaSprawa(); } } else { KoniecPracy = true; ZwolnijOkienko(); } break; case Okienko.Status.Oczekuje: if (okienko.Oczekuj()) { okienko.ZwolnijOkienko(); NowaSprawa(); } break; case Okienko.Status.Zajety: if (ListaMatek.ElementAt(okienko.WywolanyBilet.ZwrocNumer()).GdzieJest() == Matka.MozliwyStan.Wyszla) { okienko.ZwolnijOkienko(); } else { ListaMatek.ElementAt(okienko.WywolanyBilet.ZwrocNumer()).PostepWSprawie(Wydajnosc); } break; default: break; } } }
public void Update() { switch (stan) { case MozliwyStan.Kolejka: Pobierz_Bilet(); break; case MozliwyStan.Poczekalnia: Podejdz_Do_Okienka(); break; case MozliwyStan.Okienko: if (!sprawa.Rozwiazana) { } else { Console.WriteLine("Matka " + Name + " ma rozwiazana sprawe"); Awansuj(); } break; case MozliwyStan.Wyszla: Console.WriteLine("Wyszłam, mam ID: " + Name + " | Zostałam obsłużona z numerem: " + bilet); Console.WriteLine("Timestamps: "); Console.WriteLine("Przyszlam o " + spisczasu.CzasPrzyjscia); if (spisczasu.CzasOtrzymaniaNumerka.Year != 1) { Console.WriteLine("Otrzymalam numerek o " + spisczasu.CzasOtrzymaniaNumerka); if (spisczasu.CzasPodejsciaDoOkienka.Year != 1) { Console.WriteLine("Podeszłam do okienka o " + spisczasu.CzasPodejsciaDoOkienka); if (spisczasu.CzasRozwiazaniaSprawy.Year != 1) { Console.WriteLine("Rozwiązałam sprawe o " + spisczasu.CzasRozwiazaniaSprawy); } else { Console.WriteLine("Nie rozwiązałam sprawy"); } } else { Console.WriteLine("Nie podeszłam do okienka"); } } else { Console.WriteLine("Nie otrzymałam numerka"); } break; default: break; } if (!SimulationRunning) { if (stan == MozliwyStan.Kolejka) { ListaSprawDostep.WaitOne(); ListaMatek.Add(this); ListaSprawDostep.ReleaseMutex(); stan = MozliwyStan.Wyszla; } else if (stan == MozliwyStan.Poczekalnia) { stan = MozliwyStan.Wyszla; } } }