![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Hola, el código de primera vista parece estar bien.
Pero si decis que el programa se te congela, obviamente hay un problema. Por lo que estuve mirando, me parece estar en el procedimiento mover; un detalle que puede ser, pero no debería, es el valor del sleep muy pequeño, proba con valores mas grandes. Lo que si genera mas sospechas es ciclo while que tenes dentro del mismo procedimiento. Pareciera que es el el que se dedica a actualizar la graficación del componente (ya que no indicas donde se hace). Si es asi, parece que no termina su ejecución hasta que termina de graficar, y ahi es el problema. Es como si estuvieras llamando al procedimiento mover directamente sin hilo. Espero que te de una idea Suerte
__________________
[Crandel] |
|
#2
|
|||
|
|||
|
otros asuntos del mismo componente
Crandel, evidentemente somos casi vecinos, por lo menos en internet ya que soy de Montevideo. Sabés que finalmente hoy a la 0:30 de la madrugada pude solucionarlo poniendo un Application.processmessages antes del sleep en el procedimiento mover. Yo tenía uno pero lo ejecutaba solamente una vez por proceso de movimiento. Poniéndolo de esta forma procesa los mensajes cada vez que dibuja una instancia del control.
Sin embargo tal vez puedas ayudarme en esto. Ahora funciona a la perfección, pero solamente cuando está solo, ya que si pongo dos o más controles iguales de estos, en un mismo form, solo funciona el último. Los primeros ni siquiera terminan de dibujarse bien, quedan como colgados mientras el otro funciona perfecto. Tenés idea si existe alguna interacción prohibida entre los threads iguales o hay que poner alguna restricción en los componentes que usan threads.? Se me ocurre que como el hilo esta dentro del componente si hay dos queda todo igual y el procesador se hace algún lío con esto. Tal vez lo que digo sea un disparate pero aviso que hace 15 días no sabía lo que era un thread :-). |
|
#3
|
||||
|
||||
|
No hay ningún tipo de restricción en los holos de ls componentes. Cada componente ejecuta su propio hilo.
El problema que tenes es que estas poniendo Application.processmessages dentro del procedimiento mover y tu problema sigue siendo el mismo, tu componentes no esta corriendo multi hilo . Con el processmessages, lo que le estas indicando a tu aplicación, es que procese los mensajes que tenga pendiente, pero eso no lo convierte en multihilo, dado que tu mientras los procesa, tu componente se deja de graficar. Sin embargo es una buena solución en muchas situaciones, pero no en la tuya. Si queres mandame por mail tu código a [email protected] y te doy una mano. Suerte
__________________
[Crandel] |
![]() |
|
|
|