Cómo actualizar la interfaz (GUI) desde otro hilo en C# WinForms?
¡Hola a todos! Soy un desarrollador principiante de C# y estoy escribiendo una pequeña aplicación en WinForms. Tengo un botón que, al hacer clic, inicia una operación larga (por ejemplo, cargar datos de internet o procesar un archivo grande). Quiero que la interfaz siga siendo receptiva durante la ejecución de esta operación, por lo que la ejecuto en un hilo separado usando `Task.Run`.
El problema surge cuando intento actualizar elementos de la interfaz (por ejemplo, ProgressBar, Label o TextBox) desde este hilo de fondo. La aplicación falla con la excepción: "InvalidOperationException: Cross-thread operation not valid. Control 'progressBar1' accessed from a thread other than the thread it was created on."
Aquí hay un ejemplo de mi código:
```csharp
private void buttonStart_Click(object sender, EventArgs e)
{
Task.Run(() => DoWork());
}
private void DoWork()
{
for (int i = 0; i <= 100; i++)
{
// Simulación de trabajo largo
Thread.Sleep(50);
// Intento actualizar la barra de progreso
}
}
```