Поделиться через


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()

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

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