Hallo Community,
Eigenen Event definieren
Immer wieder taucht die Frage auf, wie man einen eigenen Event definiert. Diese ist in Form von Codebeispielen in [Lösung] Problem mit EventHandler beantwortet.
Standard (empfohlen; alle Basisinformationen hier): [Lösung] Problem mit EventHandler
Mittels Erweiterungsmethode (Variante ab C# 3.0 empfohlen): [Lösung] Problem mit EventHandler
Mittels Null-conditional operator (Variante ab C# 6.0 empfohlen): [Lösung] Problem mit EventHandler
Mit eigenen EventArgs (ab .NET 2.0): [Lösung] Problem mit EventHandler
Mit eigenen EventArgs (bis .NET 1.x): [Lösung] Problem mit EventHandler
Ganz ohne EventArgs (nicht empfohlen): [Lösung] Problem mit EventHandler
**
Information zu Events**
Hintergrundlektüre bietet das Rheinwerk Computing / Openbook / Visual C# 2012 u.a. in diesen Kapiteln/Abschnitten:
5.2 Ereignisse eines Objekts
27 Ereignisse in der WPF
Im 2012er Openbook findet sich (wohl) nichts mehr zu Windows Form, sondern nur noch zu WPF. Im Galileo Openbook Visual C# 2008 (falls das noch jemand hat) gab es Informationen u.a. in diesen Kapiteln/Abschnitten:
4.5 Ereignisse eines Objekts
13.4 Ereignisse grafischer Windows-Komponenten
13.7 Ereignisse einer Form
14.1.11 Tastatur- und Mausereignisse
Events und Multithreading
Häufig ist nicht ausreichend bewusst, dass EventHandler ohne weiteres Zutun immer in dem Thread laufen, der den Event gefeuert hat. In welchem Thread der EventHandler registriert wurde, spielt überhaupt keine Rolle.
Häufige Fehler
Problem: EventHandler wird nicht aufgerufen
Ursache: EventHandler wurde nicht registriert oder das Event wurde nicht ausgelöst
Problem: EventHandler wird mehrfach direkt nacheinander aufgerufen
Ursache: EventHandler wurde mehrfach registriert (durch mehrere Codestellen oder durch eine Codestelle, die mehrfach ausgeführt wurde)
Siehe auch
[FAQ] Event nur bei Benutzeraktion auslösen, nicht bei programmtechnischer Änderung
best practise: Event einer aggregierten Klasse weiterleiten
herbivore