Comment mettre à jour l'interface graphique depuis un autre thread en C# WinForms?
Bonjour, collègues! Je suis un développeur C# débutant et j'ai rencontré un problème qui me rend fou. J'ai une application Windows Forms qui exécute une opération longue (par exemple, le traitement d'une grande liste de fichiers ou le téléchargement de données depuis Internet). Pour éviter que l'interface ne se bloque, je lance cette opération dans un thread séparé à l'aide de `Task.Run` ou `Thread`.
Voici un exemple simplifié de mon code:
```csharp
private void buttonStart_Click(object sender, EventArgs e)
{
Task.Run(() => LongRunningOperation());
}
private void LongRunningOperation()
{
for (int i = 0; i < 100; i++)
{
// Un travail quelconque
Thread.Sleep(100);
// J'essaie de mettre à jour la ProgressBar
progressBar1.Value = i;
// Ou le Label
labelStatus.Text = $"Traité {i} sur 100";
}
}
```
Mais quand je lance l'application et que je clique sur le bouton, elle plante avec une exception:
**"System.InvalidOperationException: 'Cross-thread operation not valid: Control 'progress