Hola a todos! Estoy programando en C# una aplicación basada en ventanas, y tengo el siguiente problema.
Mi proceso principal, al pulsar cierto botón en el interfaz gráfico, debe leer unos datos de una base de datos (operación que tarda unos segundos). Para evitar que no se quede la ventana como "colgada" mientras realiza la operación he pensado en crear un hilo que me muestre una nueva ventana diciendo "Cargando, espere".
Hasta aquí todo bien, excepto por un pequeño detalle: algunas veces, cuando aborto el hilo que me crea la pantalla de espera, ignora esta señal de aborto y la ventana permanece en la pantalla como si nada.
Os dejo el código a ver si podeis saber que hago mal, o que otra solución podríais aportar.
Saludos.
Mi proceso principal, al pulsar cierto botón en el interfaz gráfico, debe leer unos datos de una base de datos (operación que tarda unos segundos). Para evitar que no se quede la ventana como "colgada" mientras realiza la operación he pensado en crear un hilo que me muestre una nueva ventana diciendo "Cargando, espere".
Hasta aquí todo bien, excepto por un pequeño detalle: algunas veces, cuando aborto el hilo que me crea la pantalla de espera, ignora esta señal de aborto y la ventana permanece en la pantalla como si nada.
Os dejo el código a ver si podeis saber que hago mal, o que otra solución podríais aportar.
Saludos.
Código [Seleccionar]
private void.... --> A este método se le llama cuando se pulsa el botón para cargar los datos correspondientes
this.Window.Hide();
this.aux = new Thread(new ThreadStart(creaPantallaEspera));
this.aux.Name = "Esperando...";
this.aux.ApartmentState = ApartmentState.STA;
this.aux.Start();
PantallaRanking ranking = new PantallaRanking(this.Window); ---> Se cargan los datos de la base de datos
this.aux.Abort(); --> Aborto el hilo
ranking.Show();
El método que ejecuta el hilo (creaPantallaEspera)
private void creaPantallaEspera()
{
PantallaEspera espera = new PantallaEspera();--> Ventana que muestra "Cargando"
espera.Show();
this.aux.Join(); -->Hago que se espere a sí mismo para que no desaparezca la ventana espera
}