DirectoryEntry.Children和Dispose

时间:2012-08-23 12:16:19

标签: c# .net active-directory dispose

我不确定,当我和它的孩子一起工作时,如何释放DirectoryEntry对象。 我是否需要释放所有孩子aтd然后免费父母或只是免费的父母?

例如,

using(DirectoryEntry entry = new DirectoryEntry())
{
    foreach (DirectoryEntry childEntry in entry.Children)
    {
        ....
    }   
}

够了吗?

或者还需要其他代码,例如

using(DirectoryEntry entry = new DirectoryEntry())
{
    foreach (DirectoryEntry childEntry in entry.Children)
    {
        using(childEntry)
        {
            ...
        }
    }   
}

1 个答案:

答案 0 :(得分:4)

你必须释放每个被列举的孩子。

此外,您应该注意,DirectoryEntry.Children每次访问其getter时都会返回新创建的对象。这是令人厌恶的,因为它严重违反了MS自己的指南(DirectoryEntry.Children 必须是一种方法),但这是真的。

所以:

  • 每次枚举儿童时,都会获得实例;
  • 父条目对枚举器创建的实例以及由枚举器创建的子条目一无所知。