Por favor, echar un vistazo al siguiente código:Application.Run() en diferentes hilos
var splashForm = new SplashForm();
m_Thread = new Thread(() => System.Windows.Forms.Application.Run(splashForm))
m_Thread.Start();
// Do some initialization
// ...
// the following method just invokes `Close()` on the right thread
splashForm.Shutdown();
// Loop until the thread is no longer alive
// ...
System.Windows.Forms.Application.Run(mainForm);
Parece como si todo funciona bien: en primer lugar veo la pantalla de bienvenida, después el formulario principal se inicia. Pero de alguna manera obtengo errores extraños, como: los elementos gráficos (una ProgressBar sin fin) no se muestran correctamente.
EDIT: Tengo dos barras de progreso, una en la pantalla secundaria, en la forma principal. Ambos muestran el mismo comportamiento (incorrecto) en el modo sin fin: no hay progreso, solo el fondo puro. /EDIT
En mi opinión, esto se debe a la llamada de Application.Run()
en diferentes hilos. Este error puede ser eliminado por llamar a cualquier función/propiedad de la mainForm antes de iniciar la pantalla de bienvenida - como, por ejemplo
mainForm.Text = mainForm.Text;
Puede alguien por favor confirmar que este código puede causar problemas - o que debería comportarse bien y no tengo para buscar el error en otro lugar?
Ya busqué implementaciones de pantalla de bienvenida y sé que se puede hacer de manera diferente. Pero estoy interesado en comprender esta implementación y sus posibles problemas. ¡Gracias!
Las barras de progreso pueden ser un poco especiales, ya que pueden truncar su propio hilo para hacer esa cosa de marquesina. ¿Puedes aislar y describir lo que sucede? Como usar un PB bloqueado, agregue un PB con valor = 50, etc. –