ATENCIÓN AL CLIENTE: +34 923 199 148

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

Tabla de contenidos

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.

Contenido relacionado