public void Run()
        {
            Lane l1 = new Lane(1);
            Lane l2 = new Lane(2);
            Lane l3 = new Lane(3);
            Lane l4 = new Lane(4, isAvailable: false);

            IAirTrafficControlTower controlTower = new AirTrafficControl(new List <Lane> {
                l1, l2, l3, l4
            });

            MaintainerTeam m1 = new MaintainerTeam(controlTower);

            m1.RequestLane(l1);

            Plane p1a = new Plane("1a", controlTower);
            Plane p1b = new Plane("1b", controlTower);
            Plane p1c = new Plane("1c", controlTower);
            Plane p1d = new Plane("1d", controlTower);


            p1a.RequestPermissionToLand();
            p1b.RequestPermissionToLand();
            p1c.RequestPermissionToLand();
            p1d.RequestPermissionToLand();
        }
コード例 #2
0
        public bool RequestLaneForMaintainance(MaintainerTeam team, Lane lane)
        {
            var requestedLane = lanes.FirstOrDefault(l => l.ID == lane.ID);

            if (requestedLane == null)
            {
                return(false);
            }
            lock (lockLanes)
            {
                if (requestedLane.IsAvailable)
                {
                    requestedLane.IsAvailable = false;
                    Console.WriteLine("Lane {0} is now used by maintainers", lane.ID);
                    return(true);
                }
                else
                {
                    Console.WriteLine("Lane {0} cannot be used by maintainers because it's already in use", lane.ID);
                    return(false);
                }
            }
        }