void ResetDeligate() { moveAllCars = null; showCarsInfo = null; prepairToStartAll = null; isfinishedCar = null; showCarsInfoEnd = null; winner = 1; GC.Collect(); }
/// <summary> /// констуктор по умолчанию, запрос количества машин в меню /// </summary> public Races() { car = new List <Car>(); moveAllCars = null; showCarsInfo = null; prepairToStartAll = null; isfinishedCar = null; showCarsInfoEnd = null; winner = 1; }
/// <summary> /// когда срабатывает событие финиша, присваиваю машине место и вывожу ее из гонки /// при этом из массива делегатов финиша машина удаляется /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Item_Onfinish(object sender, EventArgs e) { if (sender is Car) { Car a = sender as Car; a.Winner_places = winner; Console.Write("This care is finished! "); a.ShowWhenEndPoint(); winner++; isfinishedCar -= a.CheckFInished; //удаляю финиш машину из массива делигатов moveAllCars -= a.MoveCar; sender = a; } }
void Prepair() { foreach (var item in car) { ///формирую массив методов в делегат moveAllCars += item.MoveCar; showCarsInfo += item.ShowCarInfo; showCarsInfoEnd += item.ShowWhenEndPoint; prepairToStartAll += item.PrepearToStart; isfinishedCar += item.CheckFInished; ///подписки на начало игры, движение машины, и финиш и изменение скорости item.Inicilization += Item_Inicilization; item.MoveShowEvent += Item_MoveShowEvent; item.Onfinish += Item_Onfinish; item.ChangeSpeed += Item_ChangeSpeed; } }