2009-12-16 12 views
4

Lorsque nous utilisons une propriété attachée à un objet de dépendance quelconque, je thunk il mappe réellement la propriété et la valeur avec l'objet de dépendance.Garbage Collection lorsque attachencyobject est détruit disconnected

E.g. <DockPanel><TextBlock x:Name="MyText" DockPanel.Dock="Top"/></DockPanel>

ici la valeur « Top » est mis en correspondance avec DockPanels DockProperty via l'objet dépendance textblock « MonTexte »

Mais ma question est quand est disposé cette cartographie? La raison pour laquelle je demande ceci est DockProperty de DockPanel est statique \ partagé. Il doit donc y avoir de tels mappings multiples (Of value, dependency object) dans une sorte de dictionnaire interne. (juste une supposition)

Donc, ceci doit être collecté lorsque l'objet de dépendance est détruit. Donc maintenant mon point est de savoir s'il y a un moyen que je devrais savoir SI une telle diposition de propriété attachée est en train de se produire (comme une sorte d'événement de désaffectation ou d'élimination pour la propriété jointe donnée et l'objet de dépendance)?

De même, si une telle opération de nettoyage de la mémoire n'a pas lieu, n'est-ce pas une fuite de mémoire?

Thx Vinit Sankhe.

Répondre

2

Comme je comprends le nouveau système de propriété dans le WPF, le DependecyObject stocke lui-même la valeur. Dans votre exemple, ce serait le bloc de texte. Ne pas confondre ce que vous appelez un membre statique - il est censé être mis en œuvre comme:

element.SetValue(DockPanel.TopProperty, value); 

Donc, il se produit pas de stockage de champ statique.

1

Je pense qu'il a été créé en utilisant WeakReference. Ainsi, la suppression des références vides a lieu périodiquement.