Exemplo n.º 1
0
 //Обработчик отправления данных в ГИБДД
 private void IntuderQueueHandle()
 {
     while (true)
     {
         var allhandled = true;
         //Все ли потоки обработки данных завершены
         foreach (var key in _states.Keys)
         {
             allhandled &= _states[key] == false && _inhurtHandled <= 0;
         }
         if (_stoped && allhandled && _intuders.Count == 0)
         {
             AllDataHandled = true;
             break;
         }
         if (_intuders.Count > 0)
         {
             var intuder = new Intuder();
             //Пытаемся получить данные о нарушителе
             while (!_intuders.TryDequeue(out intuder))
             {
                 ;
             }
             //Отправляем данные в ГИБДД
             if (!intuder.IsSended)
             {
                 _intudersDb.Add(intuder);
                 WriteToLog(this, "Сведения о нарушителе " + intuder.Name + "переданы в Гибдд");
                 Thread.Sleep(2000);
             }
         }
     }
 }
Exemplo n.º 2
0
        //Обработчик данных, пришедших с камеры
        private void StartDataHandle(int number, byte[] photo, int speed, int camera)
        {
            //Моделируем идентификацию гражданина по номеру авто
            var name = GetNameByAutoNumber(number);

            Thread.Sleep(3000);
            if (speed > 60)
            {
                WriteToLog(this, "Нарушитель идентифицирован. Номер: " + number + " Имя: " + name + "Скорость " + speed);
                //Моделируем обработку изображения
                Thread.Sleep(5000);
                WriteToLog(this, "Изображение, доказывающее нарушение гражданином " + name + " ПДД обработано.");
                //Добавляем сведения в очередь отправки в ГИБДД
                var intuder = new Intuder {
                    Name       = name,
                    Photo      = photo,
                    Speed      = speed,
                    AutoNumber = number,
                    IsSended   = false
                };
                _intuders.Enqueue(intuder);
            }
            lock (_inhurtLocker) {
                _inhurtHandled--;
            }
        }