Sagen wir die folgende Methode haben:Kann die Verwendung von Lambda als Event-Handler einen Speicherverlust verursachen?
private MyObject foo = new MyObject();
// and later in the class
public void PotentialMemoryLeaker(){
int firedCount = 0;
foo.AnEvent += (o,e) => { firedCount++;Console.Write(firedCount);};
foo.MethodThatFiresAnEvent();
}
Wenn die Klasse mit dieser Methode instanziiert wird und die PotentialMemoryLeaker
Methode wird mehrmals aufgerufen, tun wir ein Speicherleck?
Gibt es eine Möglichkeit, diesen Lambda-Event-Handler zu lösen, nachdem wir MethodThatFiresAnEvent
aufrufen?
Wie in den Antworten zu machen unten angegeben ist, gibt es keine Möglichkeit, es zu aushängen ohne einen Verweis zu sparen. Allerdings können Sie es sich selbst abhaken lassen: http://StackOverflow.com/Questions/1747235/weak-Event-Handler-Model-for-use-with-Lambdas/1747236#1747236 – Benjol