Anknüpfend an diese Stelle - Was sind die Nachteile bei der Verwendung des -=
dann +=
vorgeschlagen, wenn ich nur ein Handler-Ereignis auslösen möchte?
_value.PropertyChanged -= _handlerMethod;
_value.PropertyChanged += _handlerMethod;
Anknüpfend an diese Stelle - Was sind die Nachteile bei der Verwendung des -=
dann +=
vorgeschlagen, wenn ich nur ein Handler-Ereignis auslösen möchte?
_value.PropertyChanged -= _handlerMethod;
_value.PropertyChanged += _handlerMethod;
Dies garantiert nicht, dass nur ein Handler ausgelöst wird.
An einer anderen Stelle könnte Ihr Handler Ihr Ereignis möglicherweise mehrfach abonnieren. In diesem Fall werden Sie nur den ersten Aufruf des Handlers entfernen.
Wenn Sie die Aufrufliste des Ereignisses untersuchen, können Sie dieses Verhalten garantieren, wenn Sie wirklich nur einen einzigen Handler gleichzeitig abonnieren wollen.
Der Gedanke dahinter ist, dass der -=-Operator nichts bewirkt, wenn Ihr Event-Handler nicht zugewiesen ist.
Ich persönlich mag diesen Ansatz nicht, ich denke, Sie sollten wirklich darauf abzielen, Ihren Code so zu refaktorisieren, dass Sie wissen dass der Ereignisbehandler nur einmal zugewiesen wird.
Die Nachteile wären: - Möglichkeit einer Race Condition, wenn Ihre Anwendung multithreaded ist und das Ereignis ausgelöst wird, wenn der Handler nicht zugewiesen ist - Ich bin auch nicht sicher, was passiert, wenn Sie _value.PropertyChanged -= _handlerMethod ausführen, wenn zwei Kopien des Handlers bereits zugewiesen sind. - chaotischer Code - offensichtlich geht aus dem Code nicht hervor, welche Klasse wann auf das Ereignis hört
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.