Jump to content

Gilberto Evangelista

Membros
  • Posts

    14
  • Joined

  • Last visited

Everything posted by Gilberto Evangelista

  1. Boa tarde, Rafael! Tudo bem? Criei uma API simples que dá um erro no momento que você faz duas requisições ao mesmo tempo para que consiga provocar aí. O fonte encontra-se em anexo. O arquivo "ErroAoClicarDuasVezes.png" exibe o erro que aparece na tela quando chamo a requisição duas vezes. Note que na imagem está mostrando um erro na preparação do relatório. O arquivo "ACBrLibBoleto-20200926.log" mostra o erro que aparece no log vindo de dentro da API. A requição está com dados fixos de geração do boleto, ou seja, são exatamente iguais os boletos a serem gerados. Criei os objetos todos dentro da controller para não ter dúvida sobre o compartilhamento de objetos, ou seja, cada requisição cria seu objeto de ACBrBoleto. Para provocar o erro, estou executando a API, abrindo o browser, digitando o endereço https://localhost:5001/boletos . Dou enter, um clique no endereço e outro enter rapidão. É apresentado o erro de AV no log. Apesar da mensagem de erro mudar desde o início do post o problema sempre foi gerar o PDF em duas requisições simultâneas. Acredito que todos os erros apresentados até agora parece ser na geração do relatório. Qualquer dúvida estou a disposição. Boleto.7z
  2. Porém funciona com uma requisição, por que quando é mais de uma requisição ao mesmo tempo estoura esse erro de fonte?
  3. Quando mando imprimi o mesmo boleto, sendo uma única requisição, ele imprime corretamente. Utilizando exatamente o mesmo boleto. Com as mesmas configurações. Exatamente tudo igual. Não dá erro nenhum de fonte. Outro ponto, onde que altero essa fonte? Eu não identifiquei onde estou passando esse tipo de configuração. O arquivo ACBrLib.ini está anexado acima Segue o arquivo log comprovando que com uma única requisição funciona corretamente sem erro de fonte. ACBrLibBoleto-20200925 (1).log
  4. Desculpa Rafael com essa DLL o erro mudou, segue o log gerado com o erro. ACBrLibBoleto-20200925.log
  5. A saída que estou utilizando é o PDF. Porém se eu deixo com a saída padrão, não dá o erro. O erro só ocorre quando tem que gerar chamando mais de uma requisição com PDF. Gerando o mesmo boleto em PDF com uma única requisição funciona corretamente.
  6. Bom dia, Rafael. Obrigado pela resposta. São instâncias diferentes. Cada requisição cria um objeto ACBrBoleto(Classe de alto nível do projeto) diferentes. Código utilizado para criação: _acbrBoleto = new ACBrBoleto(caminhoACBr); E mesmo assim, quando chamo as duas requisições ao mesmo tempo está estourando o erro no log. Lembrando que só dá o erro quando existe chamadas simultâneas que geram PDF. Quando é uma requisição por vez, funciona perfeitamente. Vocês tem algum relato de alguém que utilizou a MT, em um ambiente de API, sem utilizar o lock, funcionando sem problemas em chamadas simultâneas? Pois já tentei de tudo aqui para fazer funcionar sem voltar erro de dentro da DLL(veja o log) e não estou conseguindo. Muito obrigado.
  7. Boa noite! Estou enfrentando um problema de concorrência com a biblioteca ACBrBoleto64.dll MT. Desenvolvi uma API com Asp.Net Core WebAPI utilizando a nova dll MT do ACBrLib. Segui todos os exemplos que estão na Demo. Porém quando faço duas requisições ao mesmo tempo está voltando o erro "String list does not allow duplicates". Segue arquivo de log (ACBrLibBoleto-20200924.log) com o erro voltando de dentro da DLL. O Comando Boleto_IncluirTitulos está sendo chamado passando para gerar o PDF. Esse erro só acontece quando é chamado duas requisições ao mesmo tempo. Segue também o arquivo ACBrLib.ini utilizado para configurar a DLL. Alguém já passou por esse problema? Eu posso seguir o que está no Demo para utilizar a dll MT em um ambiente de concorrência ou tenho que alterar alguma coisa para que funcione em um ambiente de concorrência? Muito obrigado. ACBrLibBoleto-20200924.log ACBrLib.ini
  8. Bom dia, pessoal! Obrigado pelas respostas! Daniel Simões, Alterei as propriedades e funcionou corretamente. Acredito que os controles GUIs precisam executar na thread principal, por isso do problema, não é? Rafael Dias, Como estou desenvolvendo uma API, tudo é executado em várias threads dentro do IIS de forma assícrona. A DLL pode ser executada em várias threads né? O problema é por causa dos controles GUIs que estavam marcados né? Só confirmando mesmo, pois senão fica inviável fazer um projeto de uma API utilizando as DLLs. Tem alguma dica no C# para que não dê nenhum tipo de problema de concorrência utilizando as DLLs? Muito obrigado.
  9. Boa noite! Estou contruindo uma api com Asp Net Core(C#). Ela está sendo executada no IIS. Todos os métodos foram baseados na demo do ACBrLib para C#. Todos os métodos funcionam corretamente menos a geração de PDF está voltando o problema abaixo: iisexpress RLNFe: Erro durante a preparação do relatório EThread(CheckSynchronize called from non-main thread "$4320") Carrego primeiro os parâmetros do objeto ACBrNFe, depois executo os comandos abaixo: ACBrNFe.LimparLista(); ACBrNFe.CarregarXML(nomeArquivoXml); ACBrNFe.ImprimirPDF(); No comando ImprimirPDF apresenta o erro acima. Segue arquivo de configuração em anexo. Alguém já passou por isso? Existe outra forma de gerar o pdf sem ser por essa função? Lembrando que as outras funções estão funcionando corretamente, somente essa que apresenta esse problema. Muito obrigado. ACBrLib.ini
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.