Laden...

[erledigt] Wie funktioniert das Eventsystem von .NET?

Erstellt von Doltsche vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.784 Views
D
Doltsche Themenstarter:in
249 Beiträge seit 2009
vor 13 Jahren
[erledigt] Wie funktioniert das Eventsystem von .NET?

Hallo zusammen

Mich würde sehr interessieren wie eigentlich ein Eventsystem auf C++ Ebene genau funktioniert bzw. wie wurde diese Klassen im .NET-Framework implementiert? Ich habe zwar im Internet recherchiert, aber ein wirklich gute Erklärung fand ich keine.

Läuft da zum Beispiel einfach eine Endlosschleife in einem Thread, der zusätzlich eine List mit allen angemeldeten Events enthält und anschliessend auf Hardwareebene einen Interrupt auslöst?

Über eine Erklärung oder einen geeigneten Link würde ich mich sehr freuen =)

LG Samuel

C
401 Beiträge seit 2007
vor 13 Jahren

Also wie genau es implementiert ist weiss ich natürlich nicht, aber generell ist es folgendermaßen:

Du erstellt ein Delegate mit bestimmten Parametern. Z.B. object und EventArgs um mal ein Beispiel zu nennen. Nun legst du ein Event vom Typen des Delegates an. Wenn ein Event abonniert wird, dann wird quasi nur ein Eintrag zu einer Liste hinzugefügt, was man auch an dem += erkennen kann. Wenn jetzt innerhalb der Klasse ein Aufruf SomeEvent(this, new EventArgs()) getätigt wird passiert prinzipiell folgendes:


void SomeEvent(object sender, EventArgs e) {
  foreach(eventHandler in AnyEvent) {
    eventHandler.call(sender, e);
  }
}

Also ist ein Event eigentlich nur eine Liste und ein Aufruf gibt die Parameter an alle Elemente der Liste weiter.

301 Beiträge seit 2009
vor 13 Jahren

Ich würde mal salopp sagen es basiert schlichtweg auf dem Observerpattern oder ? Oder war das gar nicht deine Frage ?

Gelöschter Account
vor 13 Jahren

hat erstmal nichts mit hardware und interrupt zu tun.

also, die windowsfenster bekommen windowsmessages. woher die kommen, ist der anwendung egal. mache beruhen auf harwareinterrupts, manche nciht.

ein event ist in c# ein multicastdelegate. kannst du dir als array von functionpointern vorstellen. tritt ein event auf, wird jeder delegat in diesem array aufgerufen (der reihe nach)

designed ist ein event nach dem ObserverPattern.

generell hat jede winformsanwendung (wpf vermutlich auch) eine nachrichtenschleife, die sich um das erhalten und weiterleiten der windowsmessages kümmert.

alles soweit klar?

D
Doltsche Themenstarter:in
249 Beiträge seit 2009
vor 13 Jahren

Hallo

Vielen Dank für eure Antworten.
Es sollte soweit klar sein =)

LG Samuel