private void Zapravka(Queue <Client> queue, Client client, Refilling refill, RichTextBox textBox, int Nq) { if (!client.GetIsWork()) { queue.Enqueue(client); sourceCars.arr.Remove(client); textBox.Text += "> Автомобиль<" + client.GetClientName() + "> присоединился к очереди на заправку..." + '\r' + '\n'; rbStat.Text += " " + client.GetClientName() + " приоритет " + client.GetPriority().ToString() + "/100\r\n " + client.GetClientName() + " время обслуживания" + client.GetWorkTime().ToString() + " сек.\r\n"; client.refill(true); if (refill.IsАFree) { refill.Start(client, queue); rbStat.Text += "\n в очереди " + Nq + " обслуживается: " + client.GetClientName() + "\n"; } else { rbStat.Text += "Автомат занят."; } } else { if (!refill.IsАFree) { rbStat.Text += "Процесс заправки идет."; } } }
private void timer1_Tick_1(object sender, EventArgs e) { //Подписались на событие окончания заправки машины //Подписываемся на событие MyEvent // myClass.MyEvent += new MyDel(Handler); Client client = new Client(nextClientName()); client.onWaitRefilling += new Client.MethodWork(client.UpdateTimeInQueue); client.onWaitRefilling += new Client.MethodWork(this.UpdateTimeInQueue); client.onWaitInspection += new Client.MethodWork(client.UpdateTimeInStack); client.onWaitInspection += new Client.MethodWork(this.UpdateTimeInStack); Refilling refilling = new Refilling(); Inspection inspect = new Inspection(); //Подписались на событие - машина с наивысшим приоритетом идет в очередь к свободному автомату client.onFinishColumn += new Client.MethodFinish(refilling.Finish); client.onFinishColumn += new Client.MethodFinish(this.FinishСolumn); client.onFinishInspaction += new Client.MethodFinish(inspect.Finish); client.onFinishInspaction += new Client.MethodFinish(this.FinishInspect); refilling.onStart += new Refilling.MethodStart(this.DecLeftTimeColumn); refilling.onStart += new Refilling.MethodStart(client.DecLeftTimeColumn); inspect.onStart += new Inspection.MethodStart(this.DecLeftTimeInspection); inspect.onStart += new Inspection.MethodStart(client.DecLeftTimeInspaction); sourceCars.arr.Add(client); sourceCars.PyramidSort(); this.rbStat.Text += "Пришла машина. " + client.GetClientName() + " встала по приоритету.\r \n "; Random rQ = new Random(); int rrQ = (int)(rQ.Next(3));//постановка в очередь if (sourceCars.arr.Count > 0) { switch (rrQ) { case 0: Zapravka(m_Queue[0], sourceCars.arr[0], refilling, this.rbColumn1, 1); break; case 1: Zapravka(m_Queue[1], sourceCars.arr[0], refilling, this.rbColumn2, 2); break; case 2: Parking(parking, sourceCars.arr[0], this.rbParking); break; } if (parking.Count > 9) { Inspection(inspection, parking.Peek(), inspect, this.rbInspection); } } else { rbStat.Text += "Больше нет желающих заправиться"; this.timer1.Stop(); } }