コード例 #1
0
        public void LookingForTable(Chairs chair, Patron patron, Glases glases, ConcurrentQueue <Patron> chairQueue)
        {
            Thread.Sleep(wp.getTimeForPatronToGoToTheTable());

            chairQueue.TryPeek(out Patron tester);


            if (tester != null)
            {
                if (chair.NumberOfEmptyChairs > 0 && patron.patronName == tester.patronName)
                {
                    chairQueue.TryDequeue(out Patron pong);
                    chair.NumberOfEmptyChairs--;
                    Thread.Sleep(wp.getTimePourBeer());
                    DrinkingBeer?.Invoke(patron);
                    // drinks beer
                    Thread.Sleep(wp.getTimeToDrinkTheBeer());
                    glases.NumberOfEmptyGlases++;
                    LeavingThePub?.Invoke(patron);
                }
            }

            if (boolvalue)
            {
                while (true)
                {
                    boolvalue = false;
                    LookingForTable(chair, patron, glases, chairQueue);
                }
            }
        }
コード例 #2
0
 public void Waitering(Glases glases)
 {
     if (glases.NumberOfEmptyGlases > 0)
     {
         while (glases.NumberOfEmptyGlases > 0)
         {
             glases.NumberOfEmptyGlases--;
             NumberOfGlasesInTheHand++;
         }
         LookingForDirtyGlas?.Invoke(NumberOfGlasesInTheHand);
         Thread.Sleep(wp.getTimeToCollectGlasses());
         while (NumberOfGlasesInTheHand > 0)
         {
             NumberOfGlasesInTheHand--;
             glases.NumberOfGlasesOnShelf++;
         }
         LeavingCleanGlas?.Invoke(0);
         Thread.Sleep(wp.getTimeToWashGlasses());
     }
 }