• Martes 12 de Mayo de 2026, 05:44

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - carlos_087

Páginas: [1]
1
C# / Re: Pantalla carga (hilos)C#
« en: Miércoles 20 de Enero de 2010, 00:25 »
Muchas gracias ProfesorX, he pensado en esa solución pero tengo varias dudas.

Tal y como usted me comenta (perdón por no haberme expresado bien) mientras no cargue los datos, no puedo continuar con mi programa. Una vez aclarado esto, tengo las siguientes dudas en cuanto a la solución que usted me da.
Si desde el proceso principal creo una ventana que me muestre "Cargando, tenga paciencia", con la demora del tiempo, se pone el típico mensajito de Window "No responde". Esto se debe a que el proceso que crea la ventana, está ocupado realizando la carga de la base de datos y por tanto no puede llevar a cabo a la vez la gestión de la ventana. De ahí que pense en una solución basada en hilos.

No se si es eso lo que usted me proponía. Si no lo es, le estaría agradecidísimo si me ayuda con la explicación o algún ejemplo.

Muchas Gracias.
PD: Cualquier otra solución, será muy bien recibida

2
C# / Pantalla carga (hilos)C#
« en: Martes 19 de Enero de 2010, 14:25 »
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.
Citar
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

        }

Páginas: [1]