Cómo actualizar la GUI desde otro hilo en C# WinForms?
¡Saludos, colegas! Soy un desarrollador principiante de C# y me he encontrado con un problema que me está volviendo loco. Tengo una aplicación de Windows Forms que realiza una operación larga (por ejemplo, procesar una gran lista de archivos o descargar datos de Internet). Para evitar que la interfaz se congele, ejecuto esta operación en un hilo separado usando `Task.Run` o `Thread`.
Aquí hay un ejemplo simplificado de mi código:
```csharp
private void buttonStart_Click(object sender, EventArgs e)
{
Task.Run(() => LongRunningOperation());
}
private void LongRunningOperation()
{
for (int i = 0; i < 100; i++)
{
// Algún trabajo
Thread.Sleep(100);
// Intento actualizar el ProgressBar
progressBar1.Value = i;
// O el Label
labelStatus.Text = $"Procesado {i} de 100";
}
}
```
Pero cuando ejecuto la aplicación y hago clic en el botón, se bloquea con una excepción:
**"System.InvalidOperationException: 'Cross-thread operation not valid: Control 'progress