Avatar ·

Comment mettre à jour l'interface (GUI) depuis un autre thread en C# WinForms ?

Bonjour à tous ! Je suis un développeur C# débutant et j'écris une petite application WinForms. J'ai un bouton qui, lorsqu'on clique dessus, lance une opération longue (par exemple, le chargement de données depuis Internet ou le traitement d'un gros fichier). Je veux que l'interface reste réactive pendant l'exécution de cette opération, donc je la lance dans un thread séparé via `Task.Run`. Le problème survient lorsque j'essaie de mettre à jour les éléments de l'interface (par exemple, ProgressBar, Label ou TextBox) depuis ce thread d'arrière-plan. L'application plante avec une exception : "InvalidOperationException : Cross-thread operation not valid. Control 'progressBar1' accessed from a thread other than the thread it was created on." Voici un exemple de mon code : ```csharp private void buttonStart_Click(object sender, EventArgs e) { Task.Run(() => DoWork()); } private void DoWork() { for (int i = 0; i <= 100; i++) { // Simulation d'un travail long Thread.Sleep(50); // J'essaie de mettre à jour la barre de progression } }