J'ai un ObservableCollection<A> a_collection;
La collection contient "n" éléments. Chaque élément A ressemble à ceci :
public class A : INotifyPropertyChanged
{
public ObservableCollection<B> b_subcollection;
Thread m_worker;
}
En fait, tout est relié à une vue de liste WPF et à un contrôle de la vue détaillée qui affiche l'information sur l'entreprise. b_subcollection
de l'élément sélectionné dans une liste séparée (liaisons bidirectionnelles, mises à jour en cas de changement de propriété, etc.)
Le problème est apparu lorsque j'ai commencé à mettre en œuvre le threading. L'idée était de faire en sorte que tout le a_collection
utilise son fil de travail pour "faire le travail" et met ensuite à jour ses fils de travail respectifs. b_subcollections
et faire en sorte que le gui montre les résultats en temps réel.
Lorsque je l'ai essayé, j'ai obtenu une exception disant que seul le thread Dispatcher peut modifier une ObservableCollection, et le travail s'est arrêté.
Quelqu'un peut-il expliquer le problème, et comment le contourner ?
0 votes
Essayez le lien suivant qui fournit une solution à sécurité thread qui fonctionne à partir de n'importe quel thread et peut être liée à plusieurs threads d'interface utilisateur : codeproject.com/Articles/64936/