Ir para conteúdo
  • Cadastre-se

dev botao

CoInitialize não foi chamado


  • Este tópico foi criado há 2549 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Estou usando uma thread para fazer umas consultas e transmissão da nfe, usando Acbrnfe

Porém as vezes na consulta de status do servidor ou consulta da nfe, ele retorna este erro: CoInitialize não foi chamado.

Mas até 1 dia atras eu estava fazendo os mesmos teste de não apresentava este erro.

Alguém tem alguma idéia ?!

valeu

Link para o comentário
Compartilhar em outros sites

  • 7 meses depois ...

Olá...

 

Algum retorno sobre este assunto?

 

É que estou tendo o erro ao usar threads.

  Verifiquei que no método "TCertificadosConf.GetCertificado" da unit ACBrCTeConfiguracoes, existe a chamada "CoInitialize(nil)" com o comentário "PERMITE O USO DE THREAD".

  Coloquei este mesmo código "CoInitialize(nil);" no método "TCertificadosConf.GetCertificado" da unit "ACBrNFeConfiguracoes" e o erro parou de ocorrer.

 

 

at+++

Editado por carlosmarian

Carlos H. Marian

Analista de Sistemas

|/-\|

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

Estou enfrentando o mesmo problema, tentei implementar a idéia sugerida por "carlosmarian" mas sem sucesso porque o Delphi não consegue encontrar o método "CoInitialize(nil)"

Alguém tem alguma luz? ou idéia de como resolver??

Acácio R. Salgueiro
Desenvolvedor, Graduando em Ciência da Computação (UNIT) e Matemática Aplicada e Computacional (UFS)

Developer, Graduate Student in Computer Science (Tiradentes University) and Applied and Computational Mathematics (Federal University of Sergipe)
Site: www.tutotec.com.br
Twitter: @Salgueiroso
Facebook: facebook.com/acacio.salgueiro
+55-79-99999-2082
Link para o comentário
Compartilhar em outros sites

Desculpem mas agora consegui implementar a solução do "carlosmarian" eu havia esquecido de adicionar o "ActiveX" a uses.

Porem o pessoal do desenvolvimento vai adicionar aos fontes do SVN?

Editado por Acacio
  • Curtir 1

Acácio R. Salgueiro
Desenvolvedor, Graduando em Ciência da Computação (UNIT) e Matemática Aplicada e Computacional (UFS)

Developer, Graduate Student in Computer Science (Tiradentes University) and Applied and Computational Mathematics (Federal University of Sergipe)
Site: www.tutotec.com.br
Twitter: @Salgueiroso
Facebook: facebook.com/acacio.salgueiro
+55-79-99999-2082
Link para o comentário
Compartilhar em outros sites

No meu caso é uma aplicação com processamento de arquivos em retagurada. o problema era que a aplicação travava no processo "importar, guardar no banco, envia lote pra sefaz, consulta lote, imprimir Danfe". Este processo travava a aplicação porque usavamos o main thread, então o cliente não podia fazer consultas de outra nfe, ou tomar outras ações enquanto a aplicação estivesse processando alguma nova nota. A solução foi separar isso em threads, então começaram a aparecer os problemas ( "CoInitialize não foi chamado"). Mas com esta solução encontrada neste tópico consegui resolver.

Não precisei mexer nos fontes do ACBr, como sugeriu o nosso colega "carlosmarian":

 

 Coloquei este mesmo código "CoInitialize(nil);" no método "TCertificadosConf.GetCertificado" da unit "ACBrNFeConfiguracoes" e o erro parou de ocorrer.

 

Na verdade adicionei o metodo "CoInitialize(nil)" no evento "DataModuleCreate" do meu próprio datamodule que instancio dentro da thread, em seguida inseri a unit "ActiveX" neste mesmo datamodulo.

Desde então não tive mais problemas.

Preferi não alterar os fontes do ACBr porque sei que quando houver atualização/implementação/melhoria do mesmo eu perderia minhas alterações quando atualizasse com os fontes do SVN.

Continuarei fazendo testes para ter a certeza que o problema não se repetirá, mas por enquanto o problema parece ter sido resolvido!

Acácio R. Salgueiro
Desenvolvedor, Graduando em Ciência da Computação (UNIT) e Matemática Aplicada e Computacional (UFS)

Developer, Graduate Student in Computer Science (Tiradentes University) and Applied and Computational Mathematics (Federal University of Sergipe)
Site: www.tutotec.com.br
Twitter: @Salgueiroso
Facebook: facebook.com/acacio.salgueiro
+55-79-99999-2082
Link para o comentário
Compartilhar em outros sites

  • 4 meses depois ...

Olá  Acacio,

   Vc teve algum problema com a impressão do DANFE usando Thread?

   Em alguns casos quando tenho uma grande massa de notas em processamento, caso alguma delas demore muito para imprimir(muitos itens por exemplo) tenho um erro gerado quando é iniciado um novo processo de impressão.

   Falha:

         "Impressão em progresso"

 

at+

 

Carlos H. Marian

Analista de Sistemas

|/-\|

Link para o comentário
Compartilhar em outros sites

Olá  Acacio,

   Vc teve algum problema com a impressão do DANFE usando Thread?

   Em alguns casos quando tenho uma grande massa de notas em processamento, caso alguma delas demore muito para imprimir(muitos itens por exemplo) tenho um erro gerado quando é iniciado um novo processo de impressão.

   Falha:

         "Impressão em progresso"

 

at+

 

Na verdade não tenho problema algum porque separei o objeto ACBrNFe em um DataModulo que instancio toda vez que vou manipular a NFe. Com isso evito que vários threads usem o mesmo objeto ACBrNFe enquanto outra thread já esta usando o mesmo objeto na mesma instancia. Verifique a possibilidade de mais de um thread estar usando o mesmo objeto ao mesmo tempo, procure instanciar um novo objeto ACBRNFE para cada thread.

  • Curtir 1

Acácio R. Salgueiro
Desenvolvedor, Graduando em Ciência da Computação (UNIT) e Matemática Aplicada e Computacional (UFS)

Developer, Graduate Student in Computer Science (Tiradentes University) and Applied and Computational Mathematics (Federal University of Sergipe)
Site: www.tutotec.com.br
Twitter: @Salgueiroso
Facebook: facebook.com/acacio.salgueiro
+55-79-99999-2082
Link para o comentário
Compartilhar em outros sites

Olá,

   é no meu caso casa thread tem uma conexao com o banco e um objeto NFe, o processo de emissão esta indo bem, consigo transmitir varias notas em um curto espaço de tempo. O meu problema esta mesmo na hora de imprimir e gerar o PDF para encaminhar o email, para estas atividades não uso componente do ACBr devido a padrões definidos pela empresa. 

   Isso é que esta me dando um pouco de problemas. Deixando a rotina instável.

Carlos H. Marian

Analista de Sistemas

|/-\|

Link para o comentário
Compartilhar em outros sites

Olá,

   é no meu caso casa thread tem uma conexao com o banco e um objeto NFe, o processo de emissão esta indo bem, consigo transmitir varias notas em um curto espaço de tempo. O meu problema esta mesmo na hora de imprimir e gerar o PDF para encaminhar o email, para estas atividades não uso componente do ACBr devido a padrões definidos pela empresa. 

   Isso é que esta me dando um pouco de problemas. Deixando a rotina instável.

 

Qual componente você usa para gerar o PDF e realizar o envio de email?

Talvez o componente de impressão seja limitado a uma unica impressão por vez (o que soa muito estranho).

Acácio R. Salgueiro
Desenvolvedor, Graduando em Ciência da Computação (UNIT) e Matemática Aplicada e Computacional (UFS)

Developer, Graduate Student in Computer Science (Tiradentes University) and Applied and Computational Mathematics (Federal University of Sergipe)
Site: www.tutotec.com.br
Twitter: @Salgueiroso
Facebook: facebook.com/acacio.salgueiro
+55-79-99999-2082
Link para o comentário
Compartilhar em outros sites

Olá Acacio,

 

    Eu uso um relatório personalizado para impressão do danfe(e gerar PDF) não o padrão do ACBr.

    Investi mas algumas horas ontem nesta rotina e acredito que tenha corrigido o problema, revisei a minha rotina de semáforo e o erro de impressão parou de ocorre. Estavam ocorrendo acessos simultaneos ao componente de impressão, que acabavam gerando o erro.

 

    Valeu.

Carlos H. Marian

Analista de Sistemas

|/-\|

Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...
  • 1 ano depois...
  • Este tópico foi criado há 2549 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.