Discussion:
Problema con control personalizado
(demasiado antiguo para responder)
Francesc
2008-11-03 23:06:07 UTC
Permalink
Hola,
Tengo un control personalizado que cuando se activa muestra una animación
con un texto de espera, la animación son varios iconos que van cambiando
para dar sensación de movimiento. La idea es utilizarlo como si fuera un
cursor de espera, pero personalizado. Entonces cuando muestro el control,
ejecuto un procedimiento que actualiza los datos de una base de datos, pero
el control no se dibuja hasta que ha terminado la actualización. ¿Cómo puedo
hacer que el control se dibuje en primer plano mientras en segundo plano se
ejecuta el procedimiento de actualización? He probado a lanzar el control en
un thread separado, pero obtengo el error de control.invoke. ¿Alguna idea?

Saludos
Pedro Maicas
2008-11-04 09:03:20 UTC
Permalink
On Tue, 4 Nov 2008 00:06:07 +0100, "Francesc"
Post by Francesc
Tengo un control personalizado que cuando se activa muestra una animación
con un texto de espera, la animación son varios iconos que van cambiando
para dar sensación de movimiento. La idea es utilizarlo como si fuera un
cursor de espera, pero personalizado. Entonces cuando muestro el control,
ejecuto un procedimiento que actualiza los datos de una base de datos, pero
el control no se dibuja hasta que ha terminado la actualización. ¿Cómo puedo
hacer que el control se dibuje en primer plano mientras en segundo plano se
ejecuta el procedimiento de actualización? He probado a lanzar el control en
un thread separado, pero obtengo el error de control.invoke. ¿Alguna idea?
Con toda seguridad para hacer eso sería más adecuado mostrar
una animacion construida con un avi, el propio sistema operativo
se encarga de 'animar' el avi en un thread independiente.

Pero puesto a usar ese control, podrías actualizar la base de datos
en otro thread, y refrescar el control en el principal. Tambien
podrías hacerlo todo en el mismo thread si periódicamente permites
al sistema operativo procesar los mensajes pendientes, lo que sería
en VB la funcion DoEvents o en el API un bucle de mensajes, si
el lenguaje que usas lo permite.



Saludos :-) - Pedro -

http://www.maicas.net/
Francesc
2008-11-04 11:24:59 UTC
Permalink
Muchas gracias por tu respuesta, utilizo vb net con compact framework 2.0,
he probado a poner la función DoEvents que me comentas y me funciona de
maravilla, justo lo que necesitaba. Llevo varios días dándole vueltas al
tema y me lo has solucionado en un periquete, gracias de nuevo

Saludos

Francesc
Post by Pedro Maicas
On Tue, 4 Nov 2008 00:06:07 +0100, "Francesc"
Post by Francesc
Tengo un control personalizado que cuando se activa muestra una animación
con un texto de espera, la animación son varios iconos que van cambiando
para dar sensación de movimiento. La idea es utilizarlo como si fuera un
cursor de espera, pero personalizado. Entonces cuando muestro el control,
ejecuto un procedimiento que actualiza los datos de una base de datos, pero
el control no se dibuja hasta que ha terminado la actualización. ¿Cómo puedo
hacer que el control se dibuje en primer plano mientras en segundo plano se
ejecuta el procedimiento de actualización? He probado a lanzar el control en
un thread separado, pero obtengo el error de control.invoke. ¿Alguna idea?
Con toda seguridad para hacer eso sería más adecuado mostrar
una animacion construida con un avi, el propio sistema operativo
se encarga de 'animar' el avi en un thread independiente.
Pero puesto a usar ese control, podrías actualizar la base de datos
en otro thread, y refrescar el control en el principal. Tambien
podrías hacerlo todo en el mismo thread si periódicamente permites
al sistema operativo procesar los mensajes pendientes, lo que sería
en VB la funcion DoEvents o en el API un bucle de mensajes, si
el lenguaje que usas lo permite.
Saludos :-) - Pedro -
http://www.maicas.net/
Loading...