Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1549 | Anzahl registrierter User: 1833 | Besucher online: 2053
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Event


Autor: Roman Wagner
Sprache: C#
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 10232
  
Kick it on dotnet-kicks.de  

Beschreibung:

Deklaration eines Events.
Es sind nur += und -= offentlich zugänglich.


Abgelegt unter: event, add, remove, EventHandler.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#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
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Ralf Patzig schrieb am:  14.02.2008 13:30:39

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);
}


schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.