Hallo,
Zitat von
Elvis:
Schnappe dir einfach mal den Refletor und "surfe" durch die
FCL. Das ist praktisch so als würdest du in den
VCL Sourcen wühlen, nur ein wenig geordneter, weil typenbezogen.
Das wollte ich schon lange mal machen.
Zitat von
Elvis:
Was Jürgen mit Events meint ist ein kleiner Kulturschock von Delphianern wenn sie es mit .Net zu tun bekommen.
In Delphi32 hieß ein event OnClick und war einfach nur eine property eines Funktionszeigers.
In .Net heißt er dann Click und ein Event ist dort ein eigener Membertyp.
Er ähnelt ener Property, doch anstatt get_/set_ haben seine Accessor die prefixe add_ und remove_.
Konsumenten deiner Klasse können also nur Delegateinstanzen hinzufügen oder ihre eigenen entfernen, aber nicht direkt den ganzen Event besetzen und somit auch nicht andere Eventhandler überschreiben.
Ach so, das ist gemeint. Das ist mir schon bekannt, aber:
Zitat von
Elvis:
Entgegen den Hirnies in die die
MSDN Docs zu dem Thema schrieben, solltest du bei der Abfrage ob dein Event leer ist
nicht das Eventfeld hernehmen.
Delegates sind immutable, d.h. wenn jemand zwischen deiner Null-Prüfung und dem Ausführen den letzten Verweis eines Handlers in einem anderen Thread entfernt, würde dein Feld null sein. Und du würdest versuchen einen null-Zeiger auszuführen.
Deshalb packe ich es immer in eine lokale Variable und prüfen die bevor ich sie ausführe.
das ist ein guter Hinweis.
Zitat von
Elvis:
btw: Am 25.10. ist mal wieder
DP Stammtisch in M., da kannst du mich ja persönlich ausquetschen.
Ich werd 'ne große Zange mitbringen
.
Gruß
xaromz