Ich habe eine ObservableCollection<A> a_collection;
Die Sammlung enthält 'n' Gegenstände. Jeder Punkt A sieht folgendermaßen aus:
public class A : INotifyPropertyChanged
{
public ObservableCollection<B> b_subcollection;
Thread m_worker;
}
Grundsätzlich ist alles mit einer WPF-Listenansicht + einem Detailansicht-Steuerelement verbunden, das b_subcollection
das ausgewählte Element in einer separaten Listenansicht anzeigt (bidirektionale Bindungen, Aktualisierungen bei geänderten Eigenschaften usw.).
Das Problem trat für mich auf, als ich anfing, Threading zu implementieren. Die gesamte Idee war, dass der gesamte a_collection
Arbeitsthread verwendet wird, um "Arbeit zu erledigen" und dann die jeweiligen zu aktualisieren b_subcollections
und die GUI die Ergebnisse in Echtzeit anzeigen zu lassen.
Als ich es versuchte, bekam ich eine Ausnahme, die besagte, dass nur der Dispatcher-Thread eine ObservableCollection ändern kann und die Arbeit zum Stillstand kam.
Kann jemand das Problem erklären und wie man es umgeht?