FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Como detengo un Hilo
Hola colegas....
Tengo una forma que ejecuta una consuta por medio de un hilo.....debido a que los datos de la tabla pueden llegar a ser muy numerosos... Pero quiero poner un boton que permita al usuario detener la busqueda.... Me podrian informar algo?
__________________
LK |
#2
|
||||
|
||||
¿El procedimiento que ejecuta el hilo lo has creado vos?... Lo normal sería ejecutar el método Terminate, pero para esto es necesario que el código que se este ejecutando "se preocupe" por verificar el estado de la variable FTerminated, y si esta es True, que cancele la ejecución!
http://www.clubdelphi.com/foros/showthread.php?t=25299 Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
|||
|
|||
Hilo
Pues .....si el procedimiento lo hice yo....
El hilo solo abre la consulta con unos parametros....y yo lo que hago es decier Query.open Como es eso que el codigo se preocupe por la verificacion de la variable FTErminated. Porque creo que no es asi....
__________________
LK |
#4
|
||||
|
||||
Si el hilo creó un DataSet, y lo matas abruptamente, el hilo no se encargará de cerrar y liberar este DataSet. Es mas, es muy posible que la consulta se siga ejecutando en el servidor. Solo imagina lo que puede producir que varios usuarios cancelen reiteradamente consultas de este tipo. Yo analizaría si tu herramienta de conexión y tu servidor soportan consultas asincrónicas. Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
|||
|
|||
Muy bien....
Huy....te agradezco esa explicacion tan detallada y precisa,....vamos a ver si puedo decirte algo...
En el Execute tu pones un procemiento que es el que toma el tiempo. Sin embargo mi proceso es solo este: ... query.open ... Creo que debo utilizar un hilo porque puede tener muchos registros. Si es asi, no puedo verificar Terminated como tu lo haces en el REPEAT ... UNTIL NOTA... yo estoy trabajando en Paradox.....y localmente... Muchisimas gracias....
__________________
LK |
#6
|
||||
|
||||
Fíjate en mi explicación que hay dos formas de terminar un hilo, por las buenas con Terminate, y por las malas con TerminateThread. Vos estas buscando la segunda, yo no lo sugiero, pero bué!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#7
|
|||
|
|||
entendido
ok .....ya lo vi.
Pero tambien es claro lo que yo hago....sobre que el proceso es solo una linea: abrir una consulta. Y obviamente quiero hacer esto de la mejor manera.... TU QUE HARIAS..... Muchas gracias..... PD: ya que tu estas conectado....no sepuede ir a un chat?
__________________
LK |
#8
|
||||
|
||||
Cita:
Cita:
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#9
|
||||
|
||||
Cita:
Saludos.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#10
|
|||
|
|||
Tengo exactamente el mismo problema, ¿como lo resolvisteis finalmente?
|
|
|
|