Nicht registrierte event-Handler Ursache Speicherverlust

Pflege ich eine web-Anwendung, die ein Speicherleck hat.

Basierend auf meiner Untersuchung mit Hilfe von Red Gate ANTS memory profiler-ich bin mir ziemlich sicher, dass der Speicherverlust verursacht durch event-Handler in der business-Schicht.

Gibt es eine Sammlung, die registriert ein Ereignis-handler für jedes Element Hinzugefügt, so dass die Sammlung neu zu Sortieren, wenn das Element für Datum geändert wird. Es scheint, dass dieser event-handler ist der Schuldige.

Den business-Schicht-für diese Anwendung ist Recht kompliziert, so halten Sie der Sammlung und Ihrer Objekte im Speicher zieht eine Reihe von anderen Objekten mit es.

Habe ich implementiert IDisposable auf die Sammlung und entfernt den event-Handler in der Dispose-Methode:

p.OnPunchDateChanged -= this.OnPunchDateChanged;

Aber die Umsetzung von IDisposable nicht helfen, da ich nicht einpacken kann alle Verweise auf die Sammlung zu verwenden oder try/catch-Blöcke. Diese Sammlung wird verwendet, indem Teile der Anwendung, dass ich nicht die Kontrolle über.

Wie lösche ich diese event-Handler zu beheben, dieser Speicherverlust?

  • Ich habe eine Frage: haben Sie jemals die Dispose-Methode aufrufen? Oder Sie setzen auf die mithilfe der () - Anweisung zu tun, dass für Sie nur?
Schreibe einen Kommentar