Lorsque je liez un BindingList<ProcessDataItem>
à un ComboBox
un InvalidOperationException
est renvoyé indiquant que la collection qui est énumérée a changé. Les instances de ProcessDataItem
reçoivent en permanence des mises à jour lorsque la valeur de mesure correspondante a changé. La classe implémente INotifyPropertyChanged
pour notifier son conteneur de ces modifications. Cela semble causer le problème. Je suis surpris d'avoir ce problème car la collection reste intacte. Rien n'est ajouté ou supprimé. Seules les valeurs changent. Comment puis-je réparer cela?Problème de liaison de données avec la classe qui est mise à jour de manière asynchrone
Edit: La documentation de l'événement BindingList.ListChanged
dit:
Se produit lorsque la liste ou un élément dans la liste change.
Cela semble causer mon problème. Devrai-je créer une propre classe de conteneur qui supprime les événements de modification de valeur alors qu'une énumération est en cours?
L'autre problème à se poser est que ces événements de modification proviennent probablement de votre thread d'arrière-plan, mais qu'ils sont consommés par un contrôle graphique et interagissent avec un contrôle graphique uniquement sur le thread graphique. En tant que tel, tout objet qui déclenche des événements qui sont consommés par l'interface graphique ne doit être modifié que sur le thread graphique. –