Wir haben eine Klasse Thing
, die IObservable<Thing>
implementiert. In einer anderen Klasse gibt es eine Sammlung von Thing
s, und diese Klasse muss auf Aktualisierungen von all diesen Observablen in einheitlicher Weise reagieren. Der offensichtliche Weg, dies zu tun, ist Observable.Merge()
, und das funktioniert im Allgemeinen; aber, wenn die Sammlung ändert, müssen wir auch alle neuen Thing
s in unserem fusionierten Abonnement abonnieren (und theoretisch von allen entfernten abbestellen, aber das scheint weniger problematisch - sie werden nur keine Updates mehr produzieren) . Das erreichen wir derzeit, indem wir das Abonnement bei jeder Änderung der Sammlung neu erstellen, aber das scheint in Bezug auf den Verarbeitungsaufwand und wegen fehlender Aktualisierungen von irgendeinem der Thing
s in der kurzen Zeit zwischen dem Verwerfen des alten Abonnements suboptimal zu sein und das Erstellen des neuen (was sich in der Praxis als ein Problem herausgestellt hat, insbesondere, da wir auch das Abonnement für eine kurze Zeitspanne benötigen und die gepufferten Elemente verloren gehen, wenn das Abonnement entsorgt wird).Eine sich ändernde Sammlung von Observablen zusammenführen
Was ist der richtige Weg, eine sich verändernde Sammlung von Observablen wie diese zusammenzuführen?
Was ist die Art von Sammlung, die die Thing Observables hält? – Shlomo
@Shlomo Oh, das hätte ich erwähnen sollen. Es ist eine 'ObservableCollection' (genauer gesagt eine Caliburn.Micro' BindableCollection'). – TeaDrivenDev
Ich gehe auch davon aus, dass Sie nicht 'Klasse Thing: IObservable' haben, die eher trippy wäre. Tippfehler? Vielleicht meintest du 'Klasse Ding: IObservable '? –
Shlomo