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 并发调用。 不这样做会导致未定义的行为。

IsAllocatedTarget属性DependentTargetAndDependent属性是线程安全的,如果不同时调用,则可以安全地使用Dispose()

构造函数

DependentHandle(Object, Object)

使用指定的参数初始化结构的新实例 DependentHandle

属性

Dependent

获取或设置当前句柄的依赖对象实例。

IsAllocated

获取一个值,该值指示此实例是否使用 DependentHandle(Object, Object) 且尚未释放。

Target

获取或设置当前句柄的目标对象实例。 只有在创建实例后DependentHandle,才能将目标设置为值null。 这样做也会导致 Dependent 开始返回 null ,并且即使以前的目标仍然处于活动状态,也有资格收集。

TargetAndDependent

获取作为原子操作的可用 Target) 和 Dependent (的值。 也就是说,即使 Target 同时设置为 null此方法,调用此方法将同时返回 null 目标值和依赖值,或返回上述两个值。 Dependent如果Target在此方案中按顺序使用,有时可以成功检索上一个目标,但无法获取依赖对象。

方法

Dispose()

执行与释放或重置非托管资源关联的应用程序定义的任务。

适用于