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?
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?