und dementsprechend rechenintensiv war das Hinzufügen, aber auch Entfernen der Nodes (hatte kaskadierende Events mit Neuberechnungen zu Folge).
...
Habe mir dann auch so beholfen, dass die Klasse im destructor
ein Flag setzt, was alle Neuberechnungen auf Eis gelegt hat
In so einem Fall stelle ich mir dann immer die Frage, ob es nicht auch im laufenden Betrieb vorteilhaft wäre, die Neuberechnung nicht bei jeder Änderung durchzuführen, sondern z.B. mit einem NeedsRecalc-Flag oder einem BeginUpdate/Endupdate aufzuschieben. Dann braucht man bei Programmende nur ein BeginUpdate aufrufen und das zugehörige EndUpdate entfällt dann einfach (hier ist dann auch ein erklärender Kommentar angebracht, sonst materialisiert sich auf wundersame Weise dann in ein paar Monaten doch noch ein EndUpdate).
Genau so funktioniert es intern im Grunde auch
Da wie du schon vermutest auch praktisch jede Änderung an Properties eine Neu-berechnung zur Folge hat, war eine
BeginUpdate
/
EndUpdate
Funktionalität sowieso zwingend notwendig.