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); }
void NowaSprawa() { ListaSprawDostep.WaitOne(); int index; bool Flaga = false; switch (kompetencja) { case Kompetencje.Administracja: index = ListaSpraw.FindIndex(x => x.ZwrocKolejke() == 'A'); if (index != -1) { okienko.UstawWywolanyBilet(ListaSpraw.ElementAt(index)); ListaSpraw.RemoveAt(index); okienko.Podejdz(); Console.WriteLine("Urzednik nr " + ID + ": Przydzielam sprawe nr " + okienko.ZdobadzWywolanyBilet() + " w okienku " + okienko.NumerOkienka); } else { Flaga = true; } break; case Kompetencje.Finanse: index = ListaSpraw.FindIndex(x => x.ZwrocKolejke() == 'F'); if (index != -1) { okienko.UstawWywolanyBilet(ListaSpraw.ElementAt(index)); ListaSpraw.RemoveAt(index); okienko.Podejdz(); Console.WriteLine("Urzednik nr " + ID + ": Przydzielam sprawe nr " + okienko.ZdobadzWywolanyBilet() + " w okienku " + okienko.NumerOkienka); } else { Flaga = true; } break; default: index = ListaSpraw.FindIndex(x => true); if (index != -1) { okienko.UstawWywolanyBilet(ListaSpraw.ElementAt(index)); ListaSpraw.RemoveAt(index); okienko.Podejdz(); Console.WriteLine("Urzednik nr " + ID + ": Przydzielam sprawe nr " + okienko.ZdobadzWywolanyBilet() + " w okienku " + okienko.NumerOkienka); } else { Flaga = true; } break; } ListaSprawDostep.ReleaseMutex(); if (Flaga) { SprawdzPrzerwe(15); } }
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; } } }