Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Acacio

Thread morrendo quando estoura exceção

Recommended Posts

Olá pessoal, boa tarde!

 

gostaria de pedir a ajuda de vocês em um problema.

 

Tenho uma rotina em um thread separado que fica em loop infinito por necessidade, porem quando existe o estouro de alguma exceção com

raise Exception.Create('mensagem de erro');

o thread para, morre, ele fica como ativo, mas o loop morre como se pausasse, ja chamei o metodo

Resume

mas nada acontece.

 

poderia me dar alguma orientação? ja procurei no google mas não encontrei nada nem aqui no Brasil nem fora do país.

 

 

 

Alguém tem alguma ideia do que pode ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigos.

 

Amigo Acácio, não sei como está seu código, mas como é um loop infinito, se ao invés do Resume você usa-se:

 

Raise Exception.Create('');

Continue;

 

Internamente, não consegui detectar algo que faça um "abort" após criar a Exception.

 

Até a próxima. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Eisenheim,

veja como está o meu loop.

 

 

 

procedure TThreadRetaguardaAuto.Execute;

var
  tempo:Integer;
begin

  tempo := 5; //5 segundos

  while not Self.Terminated do begin

    Sleep(tempo*1000);

    VerificarPendencias;

  end;
 
end;

 

 

se dentro da procedure "VerificarPendencias" alguma exceção estourar por quaisquer motivo o Thread morre.

é como se ele pausasse e não consigo dar stop nem resume, ele fica praticamente morto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo.

 

Dentro da sua rotina VerificaPendencias não existe nenhuma situação que esteja utilizando a instrução Abort ou Exit ? Se você puder, compartilhe o conteúdo dessa rotina se não for muito grande também para eu analisar e tentar ver se consigo te ajudar.

 

Caso não esteja, não sei se é o correto nessa situação, mas tente algo como:

 

try

VerificaPendencias;

except

end;

 

Até a próxima. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.