Beispiel #1
0
        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 += "Процесс заправки идет.";
                }
            }
        }
Beispiel #2
0
        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();
            }
        }