Esempio n. 1
0
 public bool EstablishConnectionToScanner(int maxTryCount, TimeSpan delay)
 {
     CodeContract.Requires(maxTryCount > 0);
     Type connectorClassType;
     try
     {
         connectorClassType = Type.GetType(_config.ScannerConnector.TypeName, true);
     }
     catch (Exception ex)
     {
         throw new Exception(string.Format(
             "Ошибка получения типа класса коннектора сканера по имени типа '{0}'",
             _config.ScannerConnector.TypeName), ex);
     }
     if (!connectorClassType.CanCastToType(typeof(ScannerConnector)))
         throw new Exception(string.Format(
             "Тип {0} должен быть унаследован от ScannerConnector", connectorClassType.FullName));
     var scannerConnectorSettings = _config.ScannerConnector.Settings.ToNameValueCollection();
     var tryCount = 0;
     while (true)
     {
         try
         {
             if (_scannerConnector != null)
                 _scannerConnector.Dispose();
             _scannerConnected = false;
             _scannerConnector = (ScannerConnector)Activator.CreateInstance(connectorClassType);
             _scannerConnector.Init(_config.ScannerConnector.BroadcastIPAddress, scannerConnectorSettings);
             _connectionDone.Reset();
             _scannerConnector.Connect(this);
             if (!_connectionDone.WaitOne(TimeSpan.FromSeconds(10), false))
                 throw new Exception("Не дождались установки соединения со сканером");
             Logger.LogInfo(Message.ScannerManagerConnected, _scanner.SerialNumber, _scanner.IPAddress);
             StartManageLampsThread();
             return true;
         }
         catch (Exception ex)
         {
             if (tryCount >= maxTryCount)
             {
                 Logger.LogError(Message.ScannerManagerCantConnect, ex, ++tryCount);
                 return false;
             }
             Logger.LogWarning(Message.ScannerManagerCantConnect, ex, ++tryCount);
             Thread.Sleep(delay);
         }
     }
 }
Esempio n. 2
0
 public override void Dispose()
 {
     base.Dispose();
     StopScanning();
     Thread.Sleep(1000);
     if (_rollTextMachine != null)
     {
         _rollTextMachine.Dispose();
         _rollTextMachine = null;
     }
     if (_scannerConnector != null)
     {
         SetLampsRegime(ScannerLampsRegime.BothOff);
         _scannerConnector.Dispose();
         _scannerConnector = null;
     }
     GC.SuppressFinalize(this);
 }