Ejemplo n.º 1
0
 private void ExecuteCommOperation(string errMessage, int retriesCount,
                                   CommOperationDelegate commOperation)
 {
     do
     {
         try
         {
             commOperation();
             return;
         }
         catch (TimeoutException)
         {
             WriteDebugLine(string.Format("{0}. Таймаут", errMessage));
             throw;
         }
         catch (System.ComponentModel.Win32Exception E)
         {
             WriteDebugLine(string.Format("{0}. Ошибка {1}: {2}", errMessage, E.NativeErrorCode, E.Message));
             if (E.NativeErrorCode == 995 && retriesCount > 0)
             {
                 // сброс ошибки и повтор попытки
                 WriteDebugLine("Сброс флага ошибки устройства");
                 CommPort.ClearError();
                 retriesCount--;
                 Thread.Sleep(10);
             }
             else
             {
                 throw;
             }
         }
     }while (true);
 }