Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado (editado)

Olá, bom dia.

Estou com uma dúvida.

Passamos o processamento da NF-e/NFC-e para uma thread no nosso sistema, de modo a evitar que tome conta da thread principal.

Tenho duas threads, uma que executa o envio e outra que atualiza uma barra de progresso (Synchronized) no form e completa a atualização dos componentes na tela assim que a outra notifica a finalização do processo de envio.

 

Minha única dúvida é com relação aos diálogos do webservice que o ACBr lança na tela, existe alguma maneira, não sei, de jogar esses diálogos na thread principal,  da VCL, ou os mesmos já executam na thread principal? Sendo que a VCL ocupa a fila principal do programa...

 

Acontece que estou tendo um problema ao voltar para o formulário, está dando um erro no .ShowModal nesse formulário, e acontece após mostrar alguma mensagem do WebService.

Também vou verificar com quem desenvolveu a parte de chamar o form, mas por enquanto, alguém tem alguma idéia?

 

Obrigado.

Editado por Leandro Araújo

Leandro Araújo, Analista de Sistemas.

  • Moderadores
Postado

Bom dia

a primeira coisa no componente ACBrNFe setou para False as opções de exibição de mensagens?

terá que programar um log de cada evento ocorrido para poder tratar isso e por exemplo em sua aplicação visualizar e poder alterar a nota para o reenvio!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado (editado)

Bom dia

a primeira coisa no componente ACBrNFe setou para False as opções de exibição de mensagens?

terá que programar um log de cada evento ocorrido para poder tratar isso e por exemplo em sua aplicação visualizar e poder alterar a nota para o reenvio!

 

Então Juiomar, setei para false, a exibição de mensagens dos WS, parece que melhorou.

 

Não sei se estou errado, mas observei que toda vez que mostro algum diálogo que não seja pela thread principal, dá erro de access violation no formulário no qual estava trabalhando.

 

Obrigado.

Editado por Leandro Araújo

Leandro Araújo, Analista de Sistemas.

Postado

Fiz mais testes aqui, realmente parece não ter nada a ver com essa questão dos diálogos.

Se eu encontrar alguma solução posto a dica aqui, mas por enquanto, nada a ver com mensagens, nem do ACBr, nem de outro lugar da aplicação.

Obrigado.

  • Curtir 1

Leandro Araújo, Analista de Sistemas.

  • Solution
Postado

Resolvido.

Tenho uma classe aqui, chamada TEmitirNFCeClass, nela o processo de envio e resposta fica isolado :

TEmitirNFCeClass = class(TInterfacedObject, IInterfaceClassProcess) 

Onde 'IInterfaceClassProcess' é uma interface que uso para processos no sistema, de modo que outra interface, a 'IInterfaceUpdateGUI' possa observar um objeto que implemente 'IInterfaceClassProcess', desse modo eu atualizo componentes na tela (Progressbar.. etc), conforme o andamento do processo, claro, usando TMultiReadExclusiveWriteSynchronizer para que cada thread leia ou escreva de forma segura no status do processo (objeto) compartilhado entre elas.

 

Esclarecendo, o problema do access violation NÃO tem nada a ver com as mensagens do webservice que são lançadas pelo ACBr NF-e/NFC-e, mas sim por que no envento .OnClose do meu formulário eu tentava dar .free em um objeto que descende de TInterfacedObject, o mesmo já é gerenciado pelo próprio ambiente de execução, e o ambiente se encarregar de liberá-lo.

 

Obrigado a todos.

  • Curtir 1

Leandro Araújo, Analista de Sistemas.

  • Este tópico foi criado há 3739 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.