Cómo acceder a elementos de la Interfaz de Usuario (UI) desde un Hilo en WindowsForms

WebProgramacion > Recursos sobre informática y tecnología > Programacion > C# > Cómo acceder a elementos de la Interfaz de Usuario (UI) desde un Hilo en WindowsForms
C#
Autor: Dámaso Velázquez Álvarez

Escenario y fundamentos teóricos

Tenemos un formulario con un elemento de la Interfaz de Usuario (UI) al que necesita acceder un hilo que está haciendo un procesado de datos.

El hilo no debe acceder directamente al control de la Interfaz de Usuario, sino que debe hacerlo de la forma que vamos a comentar.

Ejemplo de código

En nuestro ejemplo, lo que vamos a modificar es el enlace a datos de un DataGridView accediendo a su propiedad DataSource.

Para ser más gráficos, vamos a mostraros el código incorrecto, del acceso directo al control:

//Código 1
dvEjemplo = dsEjemplo.Tables[0].DefaultView;
dataGridViewEjemplo.DataSource = dvEjemplo;

Ahora veamos el código que deberíamos haber utilizado.

//Código 2
dvEjemplo = dsEjemplo.Tables[0].DefaultView;
this.Invoke((MethodInvoker)delegate
{
    dataGridViewEjemplo.DataSource = dvEjemplo; //Acceso seguro a la UI
});

En este ejemplo, el fallo que se estaba generando con el Código 1, es que el ScrollBar vertical dejaba de funcionar y se veía transparente.

Podría interesarte...

Cómo evitar que se bloquee una pantalla mientras carga datos en WindowsForm con Hilos
En el siguiente ejemplo vamos a resolver el problema de bloqueo de pantalla mientras dura el procesado de datos