2012-04-11 24 views
1

Mögliche Duplizieren:
Unsubscribe anonymous method in C# How do I Unregister 'anonymous' event handlerDetach ein anonymer Eventhandler

Ok, können sagen, dass ich den folgenden Code haben:

private void AttachEvent(AwesomeObject someObject) 
    { 
     int id = GetCurrentIdValue(); 
     someUnknownClass.SomeEvent +=() => someObject.CreateAwesomeness(id); 
    } 

(im Wesentlichen, ich bin nur versuchen, die Notwendigkeit zu veranschaulichen, eine lokale Variable in einem Event-Handler zu verwenden vorgeschlagen in this thread). Aus Sicht des Speichermanagements kann ich mich nicht einfach von einem UnknownClass.SomeEvent lösen, da ich keinen Handle für den Handler habe. Angenommen, einigeUnknownClass ist ein Drittanbieter-Typ. Daher kann ich innerhalb dieser Klasse keinen Code hinzufügen, um das Ereignis wie vorgeschlagen intern zu trennen.

Meine Frage ist, wie vermeide ich eine Speicherlecks, während immer noch anonyme Methoden als Event-Handler verwenden können?

+0

Sowie: http://stackoverflow.com/questions/1348150/how-doi-i-unregister-anonymous-event-handler und http://stackoverflow.com/questions/2051357/c-sharp-adding -und-entfernen-anonymous-event-handler und viele andere. – Oded

+0

Speziell mit Lambdas, antworten Sie hier: http://Stackoverflow.com/a/1362244/1583 – Oded

Antwort

0

Es ist nicht möglich, nicht in der Art, wie Sie sie verwenden. Was Sie tun können, ist, diese Methode zu einer Variablen und nach der Verwendung , dass Variable zu +- von Ereignis zuweisen. Aber auf diese Weise werden Sie das "natürliche" Gefühl verlieren, das Ihnen die Verschlüsse normalerweise geben.