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!
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
Curtir tópico
+ 0
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.
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:
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:
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
Clique aqui para fazer login e interagir na Comunidade :)