Сборка мусора, когда прикрепленный объект зависимости уничтожается \ отключается - PullRequest
4 голосов
/ 16 декабря 2009

Когда мы используем любое прикрепленное свойство к любому объекту зависимости, я думаю, что оно фактически отображает свойство и значение с объектом зависимости.

например. <DockPanel><TextBlock x:Name="MyText" DockPanel.Dock="Top"/></DockPanel>

Здесь значение «Top» отображается с помощью DockPanels DockProperty через текстовый блок объекта зависимости «MyText»

Но мой вопрос, когда это отображение удаляется? Причина, по которой я спрашиваю это, состоит в том, что DockProperty DockPanel является статическим \ общим. Таким образом, он должен иметь несколько таких сопоставлений Pair (Of value, dependency object), сопоставленных с ним в каком-то внутреннем словаре. (только предположение)

Так что это должен быть мусор, когда объект зависимости уничтожен.

Итак, теперь я хочу сказать, есть ли какой-то способ, которым я должен знать, если происходит такое погружение присоединенного свойства (например, какое-либо событие, приводящее к унижению или удалению для данного присоединенного свойства и объекта зависимости)?

Также, если такая сборка мусора не происходит, не является ли это утечкой памяти?

Thx Винит Санхе.

Ответы [ 2 ]

2 голосов
/ 16 декабря 2009

Как я понимаю, новая система свойств в WPF, сам DependecyObject хранит значение. В вашем примере это будет текстовый блок. Не запутайтесь, когда вы вызываете статический член - он должен быть реализован так:

element.SetValue(DockPanel.TopProperty, value);

Так что не происходит хранения статических полей.

1 голос
/ 16 декабря 2009

Я думаю, что он был создан с использованием WeakReference. Так что удаление пустых ссылок происходит периодически.

...