DependentHandle Структура

Определение

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

public value class DependentHandle : IDisposable
public struct DependentHandle : IDisposable
type DependentHandle = struct
    interface IDisposable
Public Structure DependentHandle
Implements IDisposable
Наследование
DependentHandle
Реализации

Комментарии

Значение DependentHandle с заданным экземпляром объекта в качестве целевого объекта не приведет к тому, что целевой объект будет поддерживаться в активном виде, если на него нет других строгих ссылок, но он будет делать это для зависимого экземпляра объекта, пока целевой объект жив.

Использование этого типа концептуально эквивалентно слабой ссылке на заданный экземпляр целевого объекта A, а этот объект имеет поле или свойство (или другую строгой ссылку) на экземпляр зависимого объекта B.

Тип DependentHandle не является потокобезопасной, и потребители отвечают за то, что Dispose() не вызывается одновременно с другими API. Отсутствие этого приводит к неопределенному поведению.

Вместо IsAllocatedэтого свойства , Target, Dependentи TargetAndDependent являются потокобезопасными и безопасными для использования, если Dispose() также не вызывается параллельно.

Конструкторы

DependentHandle(Object, Object)

Инициализирует новый экземпляр DependentHandle структуры с указанными аргументами.

Свойства

Dependent

Возвращает или задает экземпляр зависимого объекта для текущего дескриптора.

IsAllocated

Возвращает значение, указывающее, был ли этот экземпляр создан с DependentHandle(Object, Object) помощью и еще не удален.

Target

Возвращает или задает экземпляр целевого объекта для текущего дескриптора. Целевому объекту можно задать null значение только после DependentHandle создания экземпляра. Это также приведет Dependent к началу возврата null и станет подходящим для сбора, даже если предыдущий целевой объект все еще жив.

TargetAndDependent

Возвращает значения и TargetDependent (если доступно) в виде атомарной операции. То есть, даже если Target одновременно задано значение null, вызов этого метода будет возвращать null либо для целевого и зависимого значений, либо возвращать оба предыдущих значения. Если Target бы и Dependent использовались последовательно в этом сценарии, иногда можно было бы успешно получить предыдущий целевой объект, но затем не получить зависимый объект.

Методы

Dispose()

Выполняет определяемые приложением задачи, связанные с удалением, высвобождением или сбросом неуправляемых ресурсов.

Применяется к