Jump to content

dev botao

AcbrNFeMonitor utilizando processador no máximo


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

Recommended Posts

Boa tarde.

Estou com o seguinte problema. Abro o AcbrNfeMonitor, utilizo a opção por TPC/IP, quando entro na tela de nota fiscal no sistema que trabalho, realizo uma conexão para verificar se esta ativo, simplesmente conetando e depois enviando o comando "fim" para encerrar a conexão.

Porém o AcbrNfeMonitor, após esta etapa fica sobrecarregando o processador.

Analisando o código, antes de ocorrer este problema, esta utilizando ainda a versão 0.8.10.3, versão do ano passado, agora atualizei para ultima versão do trunk.

Analisando as revisões do servidor, identifiquei que o problema iniciou a partir da revisão 7916, onde foi alterado o componente TCPServer de TIdTCPServer para o TACBrTCPServer.

Analisando o código, acredito ter identificado que este problema esta ocorrendo na thread TACBrTCPServerThread.Execute; no font ACBrSocket. Após criar esta thread mesmo tendo encerrado a conexão o processo continua executando utilizando 100% do processador.

Como não entendo muito sobre o TACBrTCPServer, não sei se estou no caminho, também posso esta devendo alguma etapa para encerrar esta conexão. 

Não estou utilizando o AcbrMonitor Plus, mas pelos teste que realizei esta ocorrendo o mesmo problema.

 

Link to comment
Share on other sites

Bom dia. Mais alguém identificou o mesmo problema? 

Baixei a versão Versão 0.1.9.10  do AcbrMonitor Plus e apresenta o mesmo problema, quando executado utiliza 100% do recurso do processador.

Como meu computador é duo core, na primeira vez que conecto e em seguida envio comando "fim" para fechar a conexão, ele continua processando consumindo 50%, se realizo a segunda conexão, altera o consumo para 100%.

No AcbrNfeMonitor, quando recebido o comando "fim" que envio, no font DoACBrNFeUnit é executado o comando "Conexao.CloseSocket;", que deveria encerra este processo.

No font ACBrSocket, na procedure "TACBrTCPServerThread.Execute" que aparentemente esta o problema, no while verifica se o componente foi encerrado ou se a property Terminated da thread TACBrTCPServerThread esta como true.

Quando chamado "Conexao.CloseSocket;", não finaliza o processo, porém alterada a propriedade Socket para -1 que representa como finalizado.

Para resolver o problema, adicionei neste while a seguinte instrução:

if fsSock.Socket = -1 then
begin
  fsErro := -1 ;
  break;
end ;

Não sei informar se é a solução correta. Se mais alguém identificou o mesmo problema, favor postar.

Aguardo algum comentário.

ACBrSocket.pas

Link to comment
Share on other sites

  • Fundadores

Antes de testar a sua solução, preciso reproduzir o problema... porém eu não compreendi o passo a passo para reproduzir o problema...

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link to comment
Share on other sites

  • Fundadores

Fiz um teste com a modificação e aparentemente está tudo OK.. Envie para o SVN, com pequenas correções...

Obrigado pela Analise e correção

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.

The popup will be closed in 10 seconds...