Avatar ·

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