Пример #1
0
        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++;
                        }
                    }
                }
            }
        }
Пример #2
0
 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
             });
         }
     }
 }