FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Dudas con Hilo en ejecución
Hola, espero que podais echarme una mano con esto, a ver tengo un boton que hace una llamada a una función, esta realiza una tarea pesada que incluso llega a congelar la aplicación, por ese motivo he empezado a mirarme los hilos y ver un poco como funcionan, me he bajado el pdf de "delphi al limite" ademas de mirar por la web, pero no me aclaro. El problema es que la llamada a la función es la siguiente:
Y el error que me da al usar el hilo es este... Como veis, la llamada a la función tiene dos parametros, entonces, suponiendo que fuera button1.Click el encargado de ejecutar el hilo y este a su vez hace la llamada a la función ¿como seria? o dicho de otro modo ¿como le paso al hilo esa función para que ejecute todo el código? No sé si me he explicado bien, espero que si. Saludos y ojalá podais ayudarme. Última edición por danielmj fecha: 20-10-2013 a las 21:52:06. Razón: mejorar pregunta |
#2
|
||||
|
||||
Ufff, creo que es más fácil un simple copia y pega del mensaje, ¿no crees?
Cita:
|
#3
|
||||
|
||||
Hola danielmj.
Publicá la declaración de la tu clase TThread y del procedimiento "CortarArchivo". Por el texto del mensaje de error y por como realizas la llamada, parece que lo has declarado como un procedimiento normal y no como método de una clase TThread. Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#4
|
||||
|
||||
jaja es cierto, me complique mas de la cuenta. Saludos.
|
#5
|
||||
|
||||
Hola ecfisa, saludos
mira.. Declaración del hilo...
hago la llamada al hilo...
Procedimiento "CortarArchivo"...
Así está ahora mismo, ¿alguna sugerencia? Una cosa, no seais muy duros con el código que estoy verdecillo ya sé que habra mil formas de hacerlo mas claro y limpio pero todo a su tiempo. De momento funciona que no es poco jajaj. P.D.: El ejemplo que uso de hilo es de la web "crea tu software" y no sé si será valido en mi caso. Saludos y gracias. Última edición por danielmj fecha: 20-10-2013 a las 23:25:31. Razón: error al copiar |
#6
|
||||
|
||||
Buenas,
Ya lo tengo solucionado, el error era mi despiste y no estudiar bien las explicaciones, a ver el problema estaba (o eso entiendo) que para pasar parametros a un hilo, hay que declarar un type tal que este:
Obviamente, cambiando nombres, y esto yo no lo hacía. Por otra parte, tampoco declaraba en el uses la unidad "ActiveX", y esta es necesaria para incializar el hilo con el parametro "CoInitialize"
Bueno, esa es la solución. Espero que le sirva a alguien. Saludos. Última edición por danielmj fecha: 21-10-2013 a las 11:58:42. Razón: error al escribir |
#7
|
||||
|
||||
Hola danielmj.
Gracias por presentarnos la solución Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#8
|
||||
|
||||
bueno, bien o mal explicado, creo que puede ayudar a alguien o eso espero. En cuanto al hilo, ya está corriendo
saludos. |
#9
|
||||
|
||||
Hola nuevamente,
Parece que no es oro todo lo que reluce... y digo esto por que si bien el hilo ya corre, cuando pulso el botón para salir (o matar al hilo), no hace ni caso y el proceso sigue... Este es código que tengo puesto para cortar el hilo definitivamente y salir de la aplicacion:
¿que hago mal? Saludos y gracias. Última edición por danielmj fecha: 22-10-2013 a las 23:27:16. Razón: error al escribir código |
#10
|
||||
|
||||
No sé que otras cosas harás mal, pero esto sí que está mal:
Con FreeAndNil liberas la memoria ocupada y la pones a nulo. Luego con Free ... ya no hay nada que liberar, en teoría. |
#11
|
||||
|
||||
Gracias por el apunte casimiro, soy de los que piensa que hay que ser humilde en todos los aspectos de la vida de ahí que sepa reconocer mis errores. Es por eso que os pido consejo sobre tal o cual código, afortunadamente son pocas las otras cosas que hago mal, y aunque la programacion no me vaya a dar de comer (es mas una aficion) el trabajar de 7 de la mañana a 8 de la tarde en un torno paralelo o en la centina de un remolcador, si se me da bien desde hace ya 25 años.
una vez mas gracias por tu comentario lo estudiare y lo pondre en practica a ver que tal. |
#12
|
||||
|
||||
¿Y trabajas de tornero en la sentina de un remolcador?
|
#13
|
||||
|
||||
si te fijas en mi anterior texto use "o" para referirme a una cosa u otra, es decir dicho de modo facilmente entendible, a veces el trabajo exige que este 12 horas de pie en el torno y otras que este doblado como un 8 entre tuberias de gasoil, aceite hidraulico etc en la sentina de un barco o en la sala de maquinas de este. Y no sabes como de reventado se llega a casa... pero es lo que hay. La programacion en mi caso es mas una especie de terapia de desconexion del dia a dia y si encima aprendo pues mejor. Saludos.
|
#14
|
||||
|
||||
Sí, es un trabajo duro.
|
#15
|
||||
|
||||
danielmj,
Cita:
Nelson. |
#16
|
||||
|
||||
Saludos y vuelta con lo mismo...
He modificado el código como me sugería casimiro (lo que ahora no sé es si le entendí bien), el caso es es que el código queda así...
Añado que esta modificación la hago en base a una discusión en stackoverflow que encontré no hace ni media hora. Dicho esto, cuando pulso sobre "cerrar" el formulario se cierra pero en segundo plano el hilo sigue corriendo, si pulso la "X" de cerrar me tira este error (ver captura). Si vuelvo a pulsar la "X" parar cerrar el formulario "a las bravas" se repite el mismo mensaje de error y ya luego si se cierra todo y sale del programa. Mensaje de error 1: Mensaje de error2 (lo muestra si pulso "continue" en el primer error): Entonces, ¿de que forma se detiene correctamente un hilo que se esta ejecutando en el momento de detenerse? P.D.: Saludos nelson, me alegra que estes de acuerdo con mi afirmación aunque veces la terapia me crispa los nervios jaja. Última edición por danielmj fecha: 23-10-2013 a las 20:33:21. Razón: faltaba informacion |
#17
|
||||
|
||||
je, je... aunque yo solamente comenté que sobraba el thread.free, porque ya lo habías liberado en la línea anterior con freeAndNil(thread)
|
#18
|
||||
|
||||
hola a todos,
sigo con lo mismo, parece que se corta el hilo pero sigue con el proceso en segundo plano. ahora el código solo tiene
Pero como digo, sigue con el proceso de unir el archivo en segundo plano, y cuando pulso la "x" para salir del formulario, me tira dos mensajes de error como las capturas de mas arriba. ¿alguna idea? Gracias. |
#19
|
||||
|
||||
error al salir
Hola, ¿por que si en el boton de salir unicamente tengo "Close" me da dos errores en forma de excepcion? lo esquematizo un poco para situaros...
No entiendo por que me da error cuando solo tiene la orden de salir y cerrar la aplicacion, a no ser que haya heredado algun "estado" de los formularios cortar/unir y lo tenga en memoria a la hora de salir de la aplicacion. Pero si es por ese motivo, tampoco sé como liberarlo. ¿alguna idea? gracias y un saludo. |
#20
|
||||
|
||||
No somos adivinos ni tenemos una bola mágica. Creo que ya has leido nuestra guía de estilo, pues eso
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Pasar cadena de conexion a tadoconnections dentro de un hilo de ejecucion | richy08 | OOP | 4 | 02-08-2010 23:49:32 |
como crear un hilo de ejecucion ayudenme plis!!! | jazmin | OOP | 4 | 21-06-2010 09:55:13 |
cuando llamo ejecutar un hilo dentro del proceso del hilo no lo hace | robertosc | Varios | 1 | 14-08-2007 22:11:09 |
Dudas Crear Objetos en Tiempo de Ejecución | Deiv | OOP | 9 | 09-08-2007 01:13:15 |
Parar un hilo de ejecución | deivi | Varios | 6 | 21-11-2006 13:36:49 |
|