public List<ContoDTO> GetContiByEsercizio(int idEsercizio, bool gestione, UserInfo userinfo) { var retryCount = 5; var success = false; var windsorRep = new WindsorConfigRepository(); List<ContoDTO> item = null; while (retryCount >= 0 && !success) { try { windsorRep.BeginTransaction(userinfo); var repo = new ContabilitaRepository(userinfo, windsorRep); var repoFornitori = new FornitoreRepository(userinfo, windsorRep); item = repo.GetContiByEsercizio(idEsercizio, gestione, repoFornitori.GetAllByAzienda()); windsorRep.Commit(); success = true; } catch (Exception ex) { _log.ErrorFormat("Errore nel caricamento dei conti ({0}) - {1} - esercizio:{2} - azienda:{3} - number:{4}", ex, (6 - retryCount), Utility.GetMethodDescription(), idEsercizio, userinfo.Azienda, getExceptionId(ex)); windsorRep.Rollback(); if (!isRetryException(ex)) throw; // Add delay here if you wish. System.Threading.Thread.Sleep(1000 * (6 - retryCount)); retryCount--; _log.InfoFormat("Caricamento dei conti - INIZIO TENTATIVO:{0} - {1} - esercizio:{2} - azienda:{3}", ex, (6 - retryCount), Utility.GetMethodDescription(), idEsercizio, userinfo.Azienda); } } if (!success) windsorRep.Rollback(); return item; }