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
|
|||
|
|||
Tengo exactamente el mismo problema, ¿como lo resolvisteis finalmente?
|
|
|
|