Muss ein Eventempfänger ein Thread sein

maria1

Mitglied
Hallo,

bin Anfänger in der C# Programmierung...also entschuldigt mich, wenn ich eine dumme Frage stelle...Wie ist das eigentlich, wenn eine Klasse ein Event sendet und mehrere Klassen dieses Event empfangen können und diese darauf hin einen Programmcode durchlaufen sollen... Müssen diese Event Empfänger-Klassen dann jeweils ein Thread sein?Denn eigentlich laufen die Event-Empfänger Klassen parallel einen Programmcode durch...wie ist das eigentlich in c# gelöst****?...hatte bisher nur mit c++ programmiert....
 
Hallo maria1,

es gibt keine dummen Fragen.

Angenommen du hast eine Klasse Auto, die das Event BremseWirdGetreten anbietet, dann kann das Event von der Instanz "aboniert" werden.

Code:
var myCar = new Car();
myCar.BremseWirdGetreten += new EventHandler( myCar_BremseWirdGetretenEventMethode);

Anschließend kannst du in der BremseWirdGetreten-Methode reagieren.

Code:
void myCar_BremseWirdGetreten(object sender, EventArgs e)
{
    //hier dann was passieren soll, wenn die Bremse getreten wird. Zum Beispiel:
    myCar.BremslichtAn = true;
}

Ich hoffe so ist es etwas verständlicher geworden.
 
Die Event-Handler werden seriell, nicht parallel abgearbeitet. Und sie werden in dem Thread abgearbeitet, der das Event auslöst.
Außerdem kann eine Klasse oder Klasseninstanz nicht einem Thread zugeordnet werden, nur der Code (welcher in der Klasse definiert ist) kann in diesem oder jenem Thread ablaufen. Die Klasseninstanz liegt ja im Arbeitsspeicher und auf den können prinzipiell alle CPUs/Threads drauf zugreifen.
 
Hallo maria1,

die zugewiesenen Methoden werden nicht parallel sondern sequentiell aufgerufen. Eine verbindliche Festlegung für die Reihenfolge gibt es dabei nicht.

Gruß
MCoder
 
vielen dank an alle, ihr habt mir sehr geholfen ...habe mich jetzt auch noch näher mit delegrate und event beschäftigt...jetzt ist mir alles klar:)
 

Neue Beiträge

Zurück