private void TransmiteLote(object l) { try { lotes lote = l as lotes; try { lote.objDados.objbelCriaXml.GeraLoteXmlEnvio(); lote.objDados.objbelRecepcao.TransmitirLote(lote.objDados.objbelCriaXml.sPathLote, lote.lNotasPesquisa); belBusRetFazenda objbelRetFazenda = new belBusRetFazenda(lote.lNotasPesquisa); objbelRetFazenda.BuscaRetorno(); lote.xStatus = belTrataMensagemNFe.RetornaMensagem(objbelRetFazenda.lDadosRetorno, belTrataMensagemNFe.Tipo.Envio); lDadosRetorno.AddRange(objbelRetFazenda.lDadosRetorno); iTentativas = 0; } catch (Exception ex) { if (ex.Message.Contains("A conexão subjacente") && iTentativas < 4) { iTentativas++; TransmiteLote(lote); } else { lote.xStatus = "Problema com o lote, Verifique a informação abaixo:" + Environment.NewLine + ex.Message; iTentativas = 0; } } this.Invoke(new MethodInvoker(delegate() { dgvLotes.Refresh(); txtInfoLote.Text = lote.xStatus; })); } catch (Exception ex) { throw ex; } }