Feedback

C# - Event

Veröffentlicht von am 11.02.2008
(1 Bewertungen)
Deklaration eines Events.
Es sind nur += und -= offentlich zugänglich.
GFU-Schulungen  [Anzeige]

C# 2017/2015/2013 Aufbau

In dieser Schulung lernen Sie fortgeschrittene Techniken im Bereich .Net C#. Dabei stehen neben den eigentlichen Techniken auch architektonische Aspekte im Mittelpunkt.

Visual Studio Team Foundation Server 2017/2015 (TFS) für Entwickler - Kompakt

Nach Teilnahme an dieser Schulung kennen Sie alle wesentlichen Funktionen des TFS für Entwickler. Sie setzen Software-Entwicklung mit dem Visual Studio Team Foundation Server erfolgreich um.

#region EventName: MyEvent
/// <summary>
/// <see cref="MyEvent"/>
/// </summary>
private event EventHandler<MyEventArgs> _MyEvent;
/// <summary>
/// ...
/// </summary>
public event EventHandler<MyEventArgs> MyEvent
{
 add { _MyEvent += value; }
 remove { _MyEvent -= value; }
}
/// <summary>
/// ...
/// </summary>
/// <param name="e">The event args
/// instance containing the event data.</param>
protected virtual void OnMyEvent(MyEventArgs e)
{
 try
 {
  if(_MyEvent != null)
  {
   _MyEvent(this, e);
  }
 }
 catch
 {
  //TODO: exception handling
  throw;
 }
}
#endregion
Abgelegt unter event, add, remove, EventHandler.

1 Kommentare zum Snippet

Ralf Patzig schrieb am 14.02.2008:
Gut ist der generische Ansatz für den EventHandler. Gut auch, daß das Auslösen des Event dem Entw.muster des .NET-Framework folgt. Folgendes als Anmerkung:
1. Es ist nicht nötig, ein event per add/remove-Kapselung zu veröffentlichen. Es sind von aussen de facto nur add und remove möglich, also reicht ein "public event EventHandler<T> TheEvent".
2. Die Methode zum Auslösen des Event kann noch bzgl. Multithreading verfeinert werden. Wird zw. dem Prüfen des event auf null und dem Auslösen des event selbiges durch Entziehen von Handlern auf null gezogen, dann gibt's eine Exception. Besser umgeht man das durch vorheriges Kopieren des Event:
EventHandler<T> handler = TheEvent;
if (handler != null)
{
handler(this, e);
}
 

Logge dich ein, um hier zu kommentieren!