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.
{
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
}
Muy buena explicación, estaba que rompía la cabeza, con Async y Await