Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

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.

 

Postado

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á 3345 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.