public void CheckForStart(object param) { KeyValuePair <DateTime, Flight> arrival; KeyValuePair <DateTime, Flight> departure; lock (WaitingArrivals) { if (WaitingArrivals.Count > 0) { arrival = WaitingArrivals.First(); //Check schedule time for arrival if (DateTime.Compare(arrival.Key, DateTime.Now) <= 0) { if (!_linesService.CheckArrival()) { _linesService.AddArrival(arrival.Value); WaitingArrivals.Remove(arrival.Key); } } } } lock (WaitingDepartures) { if (WaitingDepartures.Count > 0) { departure = WaitingDepartures.First(); //Check schedule time for departure if (DateTime.Compare(departure.Key, DateTime.Now) <= 0) { //We can take departure only if both of 6 & 7 lines is empty - in another case we can catch bung //Simple switcher use only for beauty if (!_linesService.CheckDepart1() && !_linesService.CheckDepart2() && switcher % 2 == 0) { _linesService.AddDepartureOn1(departure.Value); WaitingDepartures.Remove(departure.Key); switcher++; } else if (!_linesService.CheckDepart1() && !_linesService.CheckDepart2()) { _linesService.AddDepartureOn2(departure.Value); WaitingDepartures.Remove(departure.Key); switcher++; } } } } }
public void AddNewPlane(Flight flight) { if (flight.Direction == 1) { lock (WaitingArrivals) { WaitingArrivals.Add(flight.QueryDate, flight); _repo.AddArival(new Arrival { Number = flight.Number, Time = flight.QueryDate }); } } else { lock (WaitingDepartures) { WaitingDepartures.Add(flight.QueryDate, flight); _repo.AddDeparture(new Departure { Number = flight.Number, Time = flight.QueryDate }); } } }