private void AtElevator() { Console.WriteLine($"T{riderThreadNumber}: R{Number} pushes E{elevator.Number}B{floorTo.Number}"); elevator.SelectFloor(floorTo); elevator.RidersCanExitEvents[floorTo].WaitOne(); Console.WriteLine($"T{riderThreadNumber}: R{Number} exits E{elevator.Number} on F{floorTo.Number}"); elevator.Exit(); State = RiderState.Exit; }
private void AtFloor() { Console.WriteLine($"T{riderThreadNumber}: R{Number} pushes {(direction == Direction.Up ? "U" : "D")}{floorFrom.Number}"); floorFrom.SelectButton(direction); floorFrom.Events[direction].RidersCanEnterEvent.WaitOne(); foreach (Elevator elevator in floorFrom.GetElevatorsToEnter(direction)) { if (elevator.TryEnter()) { this.elevator = elevator; Console.WriteLine($"T{riderThreadNumber}: R{Number} enters E{elevator.Number} on F{floorFrom.Number}"); State = RiderState.AtElevator; return; } } floorFrom.Events[direction].ButtonReleasedEvent.WaitOne(); }