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); } }