Когда будут выпущены присоединенные свойства ссылочного типа (DependencyProperty)? - PullRequest
3 голосов
/ 28 октября 2010

Скажем, я хочу создать вложенное свойство, которое присоединяет список ссылок на объекты к экземпляру представления (DependencyObject / FrameworkElement) ...

Когда он выпустит все эти ссылки? Будет ли он вызывать Dispose для вложенных значений свойств, если они реализуют его?

Ответы [ 2 ]

2 голосов
/ 28 октября 2010

Возможно, проще думать, что «ссылки» никогда не будут «выпущены».Они просто перестают использоваться и больше не могут быть найдены, следуя какой-либо цепочке ссылок из глобального пространства или любого стека потоков.Затем они считаются мусором, и в какой-то момент сборщик придет и заберет память, которую они занимают.Если у них есть финализаторы, он не будет сразу собирать память, а помещает объект в очередь, которая сначала вызовет финализатор.

A FrameworkElement не должно по разным причинам,вызовите Dispose для любой ссылки, содержащейся в его словаре значений, когда она выгружается.Первоначально, потому что он не может знать, что он ответственен за это.

Представьте себе сценарий, в котором код в другом месте создал одноразовый объект, а также прикрепил его к элементу фреймворка.Что произойдет, если этот код позже попытается использовать объект только для того, чтобы обнаружить, что элемент framework взял его на себя, чтобы избавиться от него?

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

0 голосов
/ 28 октября 2010

Представьте свойства зависимостей как пары ключ-значение в объектах DependencyObjects. Когда вы присваиваете значение присоединенному свойству зависимости (или обычному свойству зависимости), это значение помещается в словарь. Это означает, что элементы в списке будут собираться сборщиком мусора, когда само представление будет собирать мусор. Обычное поведение тоже обычное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...