Ver Mensaje Individual
  #9  
Antiguo 13-07-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por gaunmanuel Ver Mensaje
...donde si lo deseo puedo detener el Thread y cancelar la consulta.
Sin embargo tengo entendido que para detener un Thread primero debes detener el proceso que esta ejecutando el Thread y posterior entonces si darle Terminate al Thread.
Mi duda es como indicarle al TADOQuery que cancele cuando le pusiste la propiedad Active := true ?
El problema realmente no es detener el Thread, sino detener la consulta.
Si haces lo primero, sin conseguir hacer lo segundo, obtendrás errores en ejecución.

Cita:
Empezado por nlsgarcia Ver Mensaje
Puedes detener el hilo directamente con le método Terminate.
Es posible que el hilo no termine o termine con errores, si lo haces de esta manera.

Cita:
Empezado por gaunmanuel Ver Mensaje
En cuestion de terminar un Thread no tengo problema, y efectivamente lo hago con el método Terminate.
Sin embargo el Thread no termina ya que dentro del Thread el proceso es unicamente un active := true de un query (TADOQuery).
Una opción es, evitar que el thread termine hasta que no haya acabado la consulta. Con eso evitas errores (hasta el punto de que la aplicación no terminará), pero sigues sin solventar el problema. Para esto revisa la ayuda sobre el método WaitFor.

La otra opción es utilizar las opciones de TADOConnection para lanzar consultas de forma asíncrona (con esto tal vez puedes evitar incluso el uso de threads). Para esto último revisa la propiedad ConnectOptions de TADOConnection:

Código Delphi [-]
property ConnectOptions: TConnectOption;

Una vez que la conexión es de este tipo, puedes intentar llamar al método Cancel de TADOConnection, a ver si consigues lo que necesitas; Pero para usar este método, necesitas que la conexión esté definida como asynchronous, tal como se explica en la ayuda.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita