2010-12-06 11 views
1

Wie kann ich feststellen, ob meine Silverlight-Benutzersteuerung entsorgt/zerstört wird?Herausfinden, wenn ein Silverlight-Benutzersteuerelement entsorgt wird

Normalerweise kann ich den Destruktor verwenden, aber ich habe eine Situation gefunden, in der ein Speicherverlust in einer Telerik-Steuerung vorliegt. Es verhindert, dass der Destruktor aufgerufen wird.

Es gibt ein Kontrollereignis namens "Unloaded", aber meine Kontrolle befindet sich auf einer Registerkarte. Wenn die Registerkarte geändert wird, wird das Ereignis "Unloaded" ausgelöst.

Ich habe eine Arbeit für das Speicherleck, aber ich muss die Tatsache abfangen, dass die Kontrolle gerade zerstört wird und führe meine Arbeit aus.

Irgendwelche Ideen?

Antwort

3

Ich weiß nicht, Details Ihres Projekts, aber vielleicht können Sie umgehen Unloaded Ereignis von Registerkarte. In diesem Fall können Sie sicher sein, dass die Registerkarte in allen untergeordneten Steuerelementen aus der aktuellen Objektstruktur entfernt wird. Sie können auch mit Application.Exit umgehen, wenn Sie Ihren Code im Out-of-Browser-Prozess ausführen, können Sie das Ereignis Window.Closing verwenden (verfügbar in Silverlight 4 oder höher).

1

Die Frage ist, müssen Sie wirklich wissen, wann das UserControl zerstört oder entsorgt wird? Wenn Sie Ihr Steuerelement (Ereignishandler, untergeordnete Elemente usw.) in den Ereignissen Loaded und Unloaded aufbauen und abreißen, sollten Sie in der Lage sein, Steuerelemente, die unsichtbar werden (vom visuellen Baum getrennt), sowie das Steuerelement korrekt zu behandeln wird für immer entfernt. Wir haben diesen Ansatz in unserer letzten Silverlight 4-Anwendung verwendet, mit der Sie Organisationen entwerfen können. alles von organisatorischen Fähigkeiten bis hin zu den benötigten Geräten. Die Anwendung hat viele Ansichten kommen und gehen, so dass wir sicherstellen mussten, dass alles richtig ausgehakt wurde.

Verwandte Themen