PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C# Events


Gast
2009-02-15, 20:17:39
Stehe ich gerade auf dem Schlauch? Ich beschäftige mich grade mit C# events:

class Sender
{
public event EventHandler SomeUpdate;

public void FireEvent()
{
// WARUM IST SomeUpdate HIER NULL ??
if (this.SomeUpdate != null)
this.SomeUpdate(this, EventArgs.Empty);
}
}

class Receiver
{
private Sender mySender;

public Receiver(Sender sender)
{
mySender = new Sender();
EventHandler callback = new EventHandler(mySender_SomeUpdate);
this.mySender.SomeUpdate += callback;
}

void mySender_SomeUpdate(object sender, EventArgs e)
{
// wird nie aufgerufen...
Console.WriteLine("Behandlung des Events");
}
}


static void Main(string[] args)
{
Sender sender = new Sender();
Receiver receiver = new Receiver(sender);
sender.FireEvent();
}



Wenn ich obigen Code aufrufe, wird sender.SomeUpdate null, sobald receiver erzeugt wurde. Durch die Zeile "this.mySender.SomeUpdate += callback;" wird SomeUpdate eine Referenz zugewiesen, aber sobald ich den c-tor verlasse, wird SomeUpdate wieder null.

Wo liegt das Problem?

Abraxus
2009-02-15, 20:29:35
Wofür hast du den sender, den benutzt du doch gar nicht?

Gast
2009-02-15, 21:19:32
Wofür hast du den sender, den benutzt du doch gar nicht?
...

public Receiver(Sender sender)
{
mySender = new Sender();

Aua das tut weh! Gerade als ich es mir nochmal angeschaut habe, fiel es mir sofort ins Auge, vorhin hab ich halbe Stunde lang nicht drauf und hab überall gesucht nur nicht dort. :x

Wie bescheuert, ok Thema erledigt. ;)