2010-11-25 3 views
7

Je viens d'enquêter sur certains contrôles Silverlight avec ANTS Memory Profiler (génial!) Et j'ai découvert que certains de mes contrôles restent en mémoire. La solution à cela a été de réinitialiser les valeurs Template et Content à null lorsque le contrôle 'Décharge' et d'effacer toutes les liaisons que j'ai faites dans le code.Comment écrire des contrôles Silverlight qui ne fuient pas la mémoire

Est-ce le schéma normal pour gérer les contrôles personnalisés Silverlight et ai-je juste échoué à le faire correctement dans le passé?

Est-ce que quelqu'un connaît un paradigme, par ex. du motif pour écrire des contrôles Silverlight avec nettoyage propre?

Addendum J'ai examiné cette question plus avant et j'ai constaté que les liaisons au DataContext sont supprimées lorsque le DataContext est défini sur null. Il semble que la procédure correcte consiste à définir n'importe quelle valeur Datacontext dans l'événement Loaded et à la définir sur null dans l'événement Unloaded. J'ai toujours un problème fondamental avec le paradigme pour l'écriture de contrôles Silverlight Templated car je ne peux pas forcer ContentControls à être détruit (voir mon numéro ici: Why are Silverlight ContentControls not garbage collected?).

+0

Pouvons-nous voir un exemple de code? Avez-vous des contrôles/Voir les modèles avec des événements attachés. Si oui sont-ils détachés correctement lorsqu'ils ne sont plus nécessaires? –

Répondre

Questions connexes