Beispiel #1
0
        private static async Task Main()
        {
            var elevator = new Elevator();

            for (var i = 1; i <= 3; i++)
            {
                var agentLevel        = DataGenerator.GenerateAgentLevel();
                var agentCurrentFloor = DataGenerator.GenerateAgentCurrentFloor();
                var agentFloorToGo    = DataGenerator.GenerateAgentFloorToGo();

                var agent = new Agent(i, agentLevel, agentCurrentFloor, agentFloorToGo);

                Task.Run(() => elevator.Call(agent));
            }

            await elevator.Worker();
        }
Beispiel #2
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);
                }
            }
        }