Share via


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 同时调用 。 否则会导致未定义的行为。

IsAllocatedTargetDependentTargetAndDependent 属性是线程安全的,如果未Dispose()同时调用,则可以安全地使用 。

构造函数

DependentHandle(Object, Object)

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

属性

Dependent

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

IsAllocated

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

Target

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

TargetAndDependent

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

方法

Dispose()

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

适用于