Ir para conteúdo
  • Cadastre-se

dev botao

Consultas de NFSe utilizando a lib de ACBrNFSe em multithread


Ver Solução Respondido por Renato Rubinho,

Recommended Posts

  • Membros Pro
Postado

Estamos tentando realizar consultas de NFSe utilizando a lib de ACBrNFSe em multithread, mas depois de um tempo rodando o projeto é lançada a seguinte exceção

 

Exceção gerada em 0x12459370 (ACBrNFSe32.dll) em .exe: 0xC0000005: violação de acesso ao ler o local 0x0003C009.

 

Estamos utilizando a DLL ACBrNFSe32.dl versão 2.0.1.126 Cdecl Multithread em C# para realizar consultar de NFSe.

 

Estamos tentando utilizar essa DLL em vários processos paralelos porem quando chega no trecho de código mostrado na imagem ocorre um erro de violação de acesso.

 

image.thumb.png.ac6ac447259cb9489b351d844a23f13e.png

 

 Testamos removendo o processamento paralelo e ao fazer isso o erro não ocorreu mais.

 Estamos interpretando que há necessidade de inicializar a DLL para cada download paralelo

 O que devemos fazer para os downloads paralelos funcionem corretamente?

 

Desde de já agradeço.

  • Consultores
  • Solution
Postado
Em 08/11/2024 at 09:47, euguizola disse:

Estamos interpretando que há necessidade de inicializar a DLL para cada download paralelo

É isso mesmo.

1 Você inicializa a biblioteca e recebe o ponteiro para ser utilizado por essa instância para os demais métodos 

2 Caso queira rodar em paralelo uma outra chamada, você inicializa a biblioteca e utiliza o novo ponteiro recebido. 

Quando eles terminarem seus respectivos processamentos, você pode fazer novas chamadas com eles. 

Caso precise de mais processamentos simultâneos, repita o passo 2.

Não se esqueça de controlar esses ponteiros que foram inicializados para que seja chamado o método finalizar para cada um deles quando não forem mais necessários

 

  • Curtir 2
  • Membros Pro
Postado

Estamos fazendo uma nova inicialização da biblioteca para cada consulta diferente feita, também é feita a finalização de cada uma dessas instancias após a consulta, mas o mesmo erro de violação de acesso continua ocorrendo, como foi dito certificamos que a biblioteca que está sendo usada é a versão de multithread, existe algo a mais que poderia ser feito para corrigir esse problema?

  • Consultores
Postado

Configure o log para paranóico, aguarde 2 ou 3 casos de erro e veja se tem alguma relação entre eles, se tiver dúvidas, anexe o log aqui para análise.

Uma sugestão inicial é aumentar o tamanho do buffer para ver se tem relação.

×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.