public virtual IList<ContoDTO> GetContiPatrimonialiPagamentiFornitoriByCondomini(IList<int> idCondomini, UserInfo userinfo) { var retryCount = 10; var success = false; var windsorRep = new WindsorConfigRepository(); var item = new List<ContoDTO>(); while (retryCount >= 0 && !success) { try { windsorRep.BeginTransaction(userinfo); var rep = new ContabilitaRepository(userinfo, windsorRep); var repoFornitori = new FornitoreRepository(userinfo, windsorRep); item = rep.GetContiPatrimonialiPagamento(idCondomini, repoFornitori.GetAllByAzienda()); windsorRep.Commit(); success = true; } catch (Exception ex) { _log.ErrorFormat("Errore nella lettura dei conti patrimoniali per pagamenti a fornitori - TENTATIVO:{0} - condomini:{1} - azienda:{2} - number:{3}", ex, (11 - retryCount), Utility.GetMethodDescription(), idCondomini.Aggregate(string.Empty, (current, i) => current + (i + " - ")), userinfo.Azienda, getExceptionId(ex)); windsorRep.Rollback(); if (!isRetryException(ex)) throw; // Add delay here if you wish. System.Threading.Thread.Sleep(1000 * (11 - retryCount)); retryCount--; _log.InfoFormat("Lettura dei conti patrimoniali per pagamenti a fornitori - TENTATIVO:{0} - condomini:{1} - azienda:{2}", (11 - retryCount), Utility.GetMethodDescription(), idCondomini.Aggregate(string.Empty, (current, i) => current + (i + " - ")), userinfo.Azienda); } } if (!success) windsorRep.Rollback(); return item; }