Exemple #1
0
        public async Task Worker()
        {
            while (!EmptyElevator)
            {
                foreach (var enteredAgent in _enteredAgents)
                {
                    if (CurrentFloor != enteredAgent.CurrentFloor)
                    {
                        WaitingElevator(enteredAgent.CurrentFloor);
                    }

                    var hasAccess = CheckPermissions(enteredAgent);

                    while (!hasAccess)
                    {
                        enteredAgent.FloorToGo = DataGenerator.GenerateAgentFloorToGo();
                        hasAccess = CheckPermissions(enteredAgent);
                    }

                    StartMoving(enteredAgent.FloorToGo);
                    Leave(enteredAgent);
                }
            }
        }