J'essaie de mettre à jour une zone de texte. Je pensais que mon code d'enfilage réglerait le problème, mais ce n'est pas le cas. Quelqu'un peut-il aider avec ceci?Erreurs de multithreading en C#
new Thread((ThreadStart)delegate { txtCapacitance.Text = Math.Round(capacitance, 3).ToString(); }).Start();
donne l'erreur suivante:
Cross-thread operation not valid: Control 'txtCapacitance' accessed from a thread other than the thread it was created on.
Notez que tout cela est en cours de démarrage par une fonction dataReceived qui est appelée chaque fois que des données USB est reçue.
Cela ne résoudra pas le problème. Les travailleurs d'arrière-plan s'exécutent toujours sur un thread différent du thread d'interface utilisateur. –
@Marcelo Cantos, Avez-vous lu la documentation? * Vous devez veiller à ne manipuler aucun objet de l'interface utilisateur dans votre gestionnaire d'événements DoWork. Au lieu de cela, communiquez avec l'interface utilisateur via les événements ProgressChanged et RunWorkerCompleted. * –
vous avez raison; J'ai tort; mes excuses. Je l'ai confondu avec un pool de threads normal. –