J'ai un objet personnalisé qui implémente INotifyPropertyChanged. J'ai une collection de ces objets où la collection est basée sur BindingList J'ai créé une source de liaison pour la collection, et définir les sources de données de la bindingsource et de la datagridview.Comment mettre à jour correctement une datagridview databound à partir d'un thread d'arrière-plan
Tout fonctionne très bien, sauf que j'ai besoin de mettre à jour les propriétés de l'objet personnalisé à partir des threads d'arrière-plan. lorsque je le fais, j'obtiens l'erreur suivante:
BindingSource ne peut pas être sa propre source de données. Ne pas définir les propriétés DataSource et DataMember à des valeurs Référé retour à BindingSource
J'ai trouvé le post suivant qui semble avoir mon problème exact (et solution?) Mais je ne peux pas comprendre tout à fait dehors.
J'ai créé et initialisé les variables oper par poste dans mon objet métier, puis je mets les deux fonctions d'événement dans ma classe de collection. Cela compilé correctement, mais se bloque sans exception lors de l'exécution.
J'ai vu beaucoup de messages disant d'utiliser Invoke/Begin Invoke, mais je n'appelle aucune fonction sur l'interface utilisateur, je ne fais que mettre à jour des objets métier, donc je ne suis pas sûr d'où je pourrais appeler. Une restriction: Je souhaite que l'objet métier ne sache pas qui l'affiche (car il y a plusieurs consommateurs). L'envoi de références GUI dans l'objet métier pour pouvoir ensuite appeler invoke à l'aide de ces références n'est pas possible. une option.
@Marc Gravell [Je sais que le message est ancien mais ..Lors de l'instanciation d'une autre liste ThreadedBindingList de liste (mon Ilist) - il n'y a pas de méthode pour cela. La méthode ne devrait-elle pas être là pour que cela soit «complet» ou y aurait-il un problème de threading? – Stix