Error Cross-thread operation not valid: cómo acceder a los controles desde otro hilo en C# WinForms
¡Hola a todos! Soy nuevo en C# y WinForms, y me he quedado atascado en un problema con multihilo. Estoy escribiendo una aplicación que carga datos de internet y los muestra en un ListBox. Para que la interfaz no se congele, ejecuto la carga en un hilo separado usando Task.Run. Aquí está el código simplificado:
```csharp
private void buttonStart_Click(object sender, EventArgs e)
{
Task.Run(() => LoadData());
}
private void LoadData()
{
for (int i = 0; i < 10; i++)
{
// Simulación de carga de datos
Thread.Sleep(1000);
// Intento agregar un elemento al ListBox
listBoxResult.Items.Add("Elemento " + i);
}
}
```
Al ejecutar, en la línea `listBoxResult.Items.Add(...)` se lanza una excepción: "Cross-thread operation not valid: Control 'listBoxResult' accessed from a thread other than the thread it was created on". Entiendo que esto se debe a que los controles se crearon en el hilo principal, pero yo accedo a ellos desde un hilo de fondo. ¿Cómo puedo solucionarlo correctamente? He leído sobre Invoke y BeginInvoke,
No answers yet.
Inicia sesión para dejar una respuesta
Blogs