Jump to content

dev botao

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

Recommended Posts

Posted

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.

 

Posted

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

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