Título: Dynamic Splash Screen Publicado por: CH4ØZ en 4 Octubre 2011, 05:28 am Bueno el titulo dice la mitad. Estoy creando un splash screen y al tratar de hacerlo dinamico me encontre con que se crea por un hilo diferente, por lo que debia realizar los cambios mediante Invoke. Mi problema es que estos cambios se realizan desde funciones declaradas en un Modulo, por lo que no existe Me. Algun reemplazo de Me.invoke desde un modulo? o alguna otra forma de crear un splash screen dinamico?
Título: Re: Dynamic Splash Screen Publicado por: Keyen Night en 4 Octubre 2011, 19:09 pm Creo haber entendido bien :xD sino aclarame más
Si el proyecto es corto y personal puedes definir Control.CheckForIllegalCrossThreadCalls como False y el ApartamentState del thread en STA para que los threads puedan tener acceso a los controles. Si es algo más serio puedes usar siempre delegados, este ejemplo se refiere a Me Código
Título: Re: Dynamic Splash Screen Publicado por: CH4ØZ en 4 Octubre 2011, 20:10 pm mmm no termino de entender muy bien, perdona.
El tema es el siguiente. Dentro del splash screen hay un label en el cual iria acualizando el estado (ej: "cargando configuracion...", "cargando X...", etc) y una barra de proreso; mi problema inicial surge con los threads dado que el splash screen no trabaja con el mismo thread que la aplicacion (o eso entendi), por lo que termine leyendo esto (http://msdn.microsoft.com/en-us/library/ms171728(VS.90).aspx). Intentando llevar esos ejemplos a mi aplicacion, me di cuenta que mi problema numero dos era como usar Me.Invoke desde el modulo donde estan las funciones (desde el que queria actualizar el splash screen) Título: Re: Dynamic Splash Screen Publicado por: Keyen Night en 4 Octubre 2011, 20:49 pm Los threads no pueden o al menos no deberian tener comunicación con los controles y esto se resuelve usando delegados como el ejemplo que te puse arriba ese ejemplo devuelve de manera segura el objeto Me. Si quieres setear el texto de un label en un thread debes hacer un delegado para eso, mira este ejemplo que acabo de escribir:
Código
Título: Re: Dynamic Splash Screen Publicado por: CH4ØZ en 4 Octubre 2011, 21:35 pm mientras vos respondias como no estaba mirando me puse a leer aver como lo podia solucionar, y hize un codigo con delegados pero por algun motivo no funciona correctamente.
Código
Ahora bien revise el codigo, y el evento SplashUpdate es llamado, los parametros se pasan bien, pero el label no cambia su contenido. ¿Por Que? (solo para saber en que falle y aprender) EDIT: Ya me di cuenta xq no funcionaba, olvidalo y muchas gracias por el ejemplo. Título: Re: Dynamic Splash Screen Publicado por: Keyen Night en 4 Octubre 2011, 22:11 pm De esa forma sigues trantando el control de forma no segura, lee el ejemplo y nota la diferencia.
|