TADOConnection.Close;

01/12/2005

0

Olá a todos!

Tenho um projeto em Delphi 7 que roda como serviço do Windows.
Por sua vez aciona-se várias Threads que tem objetivos diversos.

Cada uma dessas threads possui diversos TADOConnection apontando para o mesmo banco (quero mudar isto mas devido a diversos fatores, é meio complicado...).

Bom o fato é que eventualmente quando é dado TADOConnection.Close a thread em questão fica no limbo, ou seja, não gera exception e ao mesmo tempo não vai para frente. O software pode ficar o dia todo funcionando, e sem mais nem menos, ocorre o problema.

O chato é que meu software não tem como tomar conhecimento deste fato para tomar uma atitude corretiva.

Alguém já possou por algo parecido? Estou acessando um banco de dados Oracle.

Há algum evento do componente que eu possa tratar?

Muito obrigado!


Marioguedes

Marioguedes

Responder

Posts

03/03/2006

Rmpena25

Mario,

Estou com um problema muito parecido. Não sei se você conseguiu resolver o seu problema mas seria interessante trocarmos umas idéias sobre o problema e podermos nos ajudar!

Entre em contato comigo: rmpena25@yahoo.com.br

Ronaldo Pena.


Responder

03/03/2006

Thiago Vidal

tive alguns problemas semelhantes com threads... fica difícil ajudar sem maiores detalhes, tudo depende da forma como foi programado o MainLoop da thread no método Execute.... mas no meu caso, bastou fazer o loop da seguinte forma:

procedure Execute;
begin
  while ADOConnection1.Active and not Terminated do
  begin
    // ... Código
  end;
end;


Caso o problema seja falha de conexão, e o objetivo seja suspender a atividade da thread até que a conexão retorne, uma sugestão seria:

Priority := tpIdle;
repeat Application.ProcessMessages
until ADOConnection1.Active or Terminated;
Priority := tpNormal;



Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar