Eventhandler temporär verändern

Hallo und moin moin,
ich habe auch eine Frage zu Event Handlern:
Ich möchte temporär einem Event während der Laufzeit eine bestimmte Methode zuordnen und diese nach Beendigung der Laufzeit wieder auf die alte Methode zurücksetzen.

Da ich zu dem Zeitpunkt nicht unbedingt weiß, welche Methode gerade als Event Handler benutzt wird, müsste ich den Wert der vorher auf dem Event liegenden Methode zwischenspeichern, um sie nach dem Durchlauf wieder zurückzusetzen.

Selbst mit Googlen kriege ich da keinen Dreh dran. Bisher setze ich immer auf die Wahrscheinlichste Methode. Das kann aber ja nicht so verwenden!

Vielen Dank und schöne Grüße aus der sonnigen Wesermarsch
Bernhard

Hallo!
Ich bin mir nicht sicher, ob ich verstehe, was Du meinst, aber vielleicht hilft es Dir ja, wenn Du Deine Eventhandler explizit verwaltest.

Also statt einem

public event EventHandler MyEvent;

z.B. sowas:

private EventHandler \_handler;
public event EventHandler MyEvent
{
 add
 {
 \_handler += value;
 }
 remove
 {
 \_handler -= value;
 }
}

Wenn Du dann an der Stelle bist, an der Du den Event feuern willst, kannst Du mit

\_handler.GetInvocationList()

die komplette Liste aller Delegates abrufen, die sich zu diesem Zeitpunkt für Deinen Event interessieren.

Übrigens ist der Code oben sehr verkürzt und nicht threadsicher. Im richtigen Leben musst Du Dich noch um Synchronisierung kümmern.

Gruß,
Martin