Cómo evitar que se bloquee una pantalla mientras carga datos en WindowsForm con Hilos

WebProgramacion > Recursos sobre informática y tecnología > Programacion > C# > Cómo evitar que se bloquee una pantalla mientras carga datos en WindowsForm con Hilos
C#
Autor: Dámaso Velázquez Álvarez

Como es habitual, en muchas ocasiones nuestros formularios tipo WindowsForm cargan una gran cantidad de información que luego es presentada en el mismo.

Para evitar que el usuario tenga la sensación de que no ha sido atendida su solicitud (eventos mediante pulsación de controles como botones, enlaces, etc.), vamos a realizar la carga de datos en segundo plano y mostraremos mientras el icono de espera (el que tenga por defecto el usuario configurado).

Para ello, vamos a ver el siguiente ejemplo, donde en el evento Load del formulario abriremos un hilo que hará la carga. El formulario va a contar con un control de tipo Panel llamado panelPrincipal que va a contener todos los controles. Mientras dure la carga, la propiedad .Enabled del panelPrincipal estará a false, para evitar que el usuario pueda accionar algún control.

private void frmEjemplo_Load(object sender, EventArgs e)
{
    Thread hilo = new Thread(new ThreadStart(this.CargarDatosHilo));
    hilo.Start();
}

private void CargarDatosHilo()
{
    UseWaitCursor = true;
    panelPrincipal.Enabled = false;

    this.CargarDatos();

    UseWaitCursor = false;
    this.Cursor = Cursors.Default;
    panelPrincipal.Enabled = true;
    this.Refresh();
}

private void CargarDatos()
{
    //Método que hace toda la carga de datos
}

Podría interesarte...

Cómo acceder a elementos de la Interfaz de Usuario (UI) desde un Hilo en WindowsForms
Ejemplo de código C# donde veremos cómo acceder a la UI desde un Hilo (Thread)
Hilo con parámetros mediante ParameterizedThreadStart
Ejemplo donde aprenderemos cómo crear hilos con parámetros utilizando ParameterizedThreadStart

Enlaces recomendados