Проблема с делегатом и вызовом события в C#

Ребята, помогите пожалуйста, если поймете суть вопроса) Есть условие для задачи, часть из которого "установить статус определенного города с помощью вызова ивента, в зависимости от количества его населения, с помощью таймера из System.Timers". Я создала событие, подписала на него каждый город, и установила таймер на 5 секунд, который меняет количество населения в городе. В классе Country есть массив Localities, однако при конвертации города в село (или наоборот) не происходит сохранение в массиве Localities (если >15000 не меняет статус на City, и т.п.)

private EventHandler<CountryEventArgs> _event;

        internal event EventHandler<CountryEventArgs> PopulationGrowth
        {
            add
            {
                _event += value;
            }
            remove
            {
                _event -= value;
            }
        }

        private void TimerHandler(object? sender, ElapsedEventArgs args)
        { 
            int buff = Population;
            Random random = new Random();
            this.Population += random.Next(-1000, 1000);
            if (_event != null)
            {
                if (buff < 15000 && Population > 15000)
                {
                    _event.Invoke(this, new CountryEventArgs() { IsToCity = true, IsToVillage = false });
                }
                if (buff > 15000 && Population < 15000)
                {
                    _event.Invoke(this, new CountryEventArgs() { IsToCity = false, IsToVillage = true });
                }
                else
                {
                    _event.Invoke(this, new CountryEventArgs() { IsToCity = false, IsToVillage = false });
                }
            }
        }
        public Village ToVillage()
        {
            Village village = new Village(Population, LocalityName, "Village");
            return village;
        }
        public City ToCity()
        {
            City city = new City(Population, LocalityName, "City");
            return city;
        }
        /// <summary>
        /// Class constructor.
        /// </summary>
        /// <param lacalityName = "locality name">Name of Locality</param>
        protected Locality(string localityName)
        {
            _timer = new Timer();
            _timer.Interval = 5000;
            _timer.Elapsed += TimerHandler;
            _timer.Start();
            _localityName = localityName;
        } 
private void CountryHandler(object? sender, CountryEventArgs args)
        {
            Locality locality = sender as Locality;
            /*if (_printCount < _localityIndex + 1)
            {
                _printCount = 0;
                Console.Clear();
            }
            _printCount++;*/
            if (args.IsToCity)
            {
                for(int i = 0; i < _localityIndex; i++)
                {
                    if (locality.Equals(Localities[i]))
                    {
                        locality = locality.ToCity();
                        Localities[i] = locality;
                        Console.WriteLine(locality.ToString());
                        //Console.WriteLine(locality.GetInfrastructure());
                        return;
                    }
                }

            }
            if(args.IsToVillage)
            {
                for (int i = 0; i < _localityIndex; i++)
                {
                    if (locality.Equals(Localities[i]))
                    {
                        locality = locality.ToVillage();
                        Localities[i] = locality;
                        Console.WriteLine(locality.ToString());
                        //Console.WriteLine(locality.GetInfrastructure());
                        return;
                    }
                }
            }
            else
            {
                for(int i = 0; i < _localityIndex; i++)
                {
                    if (locality.Equals(Localities[i]))
                    {
                        Console.WriteLine(locality.ToString());
                        //Console.WriteLine(locality.GetInfrastructure());
                        return;
                    }
                }
            }
        }

Ответы (0 шт):