Nehmen wir an, ich habe eine einfache Form in C# (winforms) mit zwei Textfeldern, einem Schieberegler und einem Objekt namens "the_volume". Ein Ereignis (OnPropertyChanged) wird gesendet, wenn sich "the_volume.value" ändert. Wie kann ich CLEAN die vier Objekte synchronisieren, ohne eine Endlosschleife zu verursachen?Unendliche Schleife von Ereignissen
- Ohne die Ereignis-Listener zu trennen
- Ohne eine boolean Verwendung zu "guard"
- Ohne Datenbindung mit
kleines Beispiel: Slider Änderungen -> Form :: slider_changed -> the_volume ist gesetzt -> form :: the_volume_changed -> setze den slider und die texboxes werte -> endless loop ...
Mein erster Instinkt wäre es, das Senden eines Ereignisses zu vermeiden, wenn der Wert nicht cha ist nges aber,
1- Wie kann ich wissen, ob die .net Kontrollen dasselbe tun werden? (Dh Auslösung nicht, wenn der Wert das gleiche ist)
2- Was für Fehler bin ich, dass es wäre ein „nutzloser“ Setter Anruf mit dieser Lösung (Set -> geändert -> set -> Stoppschleife)
afaik 'TextBox' und' Slider' führen keine Änderungsereignisse auf, wenn keine _real_Änderung vorhanden war (wenn der _new_ Wert der gleiche wie der _old_Einzelwert ist). Also sollte es keine Endlosschleife geben. –
aber ist der extra "setter" Anruf vermeidbar? – d08z
glaube nicht, dass es ein Leistungsproblem ist, also brauchen Sie es nicht zu vermeiden. Wenn du es wirklich vermeiden willst, würde ich den booleschen "Wächter" vorschlagen. –