【发布时间】:2011-01-27 07:09:06
【问题描述】:
我正在使用 C# 处理 Active Directory。实例化PrincipalContext 对象似乎很昂贵,所以我想将一个存储在类变量中。
当使用PrincipalContext 作为局部变量时,我可以使用方便的using 语法。将IDisposable 对象存储在静态变量中时,如何确保正确处置该对象?
【问题讨论】:
-
您希望何时处理?
-
好问题! - 我在想当类型被垃圾收集时。大概当 GC 检测到内存中的对象没有对该类型的实例留下任何引用时会发生这种情况?
-
@Ben:不要依赖 GC 来处理你的对象。任何实现 IDisposable 的对象都必须被确定性地处理掉,否则它不会实现接口。 GC 收集是动态的,甚至永远不会保证发生。
-
有些 CLR 类型永远不会被 GC 收集。如果您不
Dispose它们,它们将一直存在于您的应用程序中,直到关闭,无论对象是否引用它们。 -
@kyoryu - 出于兴趣,你能给我一个这样的 CLR 类型的例子吗?
标签: c# active-directory idisposable class-variables