PrincipalSearcher.FindByIdentitiy()内存泄漏

时间:2012-11-27 20:43:33

标签: .net directoryservices

PrincipalSearcher.FindByIdentitiy() DirectorySearcher中,Gary Caldwell指出(在社区内容的底部)使用此方法导致内存泄漏,因为“底层实现使用SearchResultsCollectionSearchResultsCollection但不会在文件描述的Dispose()上调用dispose。“当使用PrincipalSearcher.FindAll()PrincipalSearcher.FindOne()作为解决方法时,此泄漏也显然需要调用明确的{{1}}。

此条目是针对.NET 3.5制作的,但没有提及.NET 4.0及更高版本的问题。任何人都可以确认这个问题是否已经解决?

1 个答案:

答案 0 :(得分:0)

使用Reflector快速浏览表明它已被修复: System.DirectoryServices.AccountManagement.ADStoreCtx FindPrincipalByIdentRefHelper

DirectorySearcher searcher = new DirectorySearcher(this.ctxBase);
SearchResultCollection results = null;
try
{
   ...
}
catch (COMException exception)
{
    throw ExceptionHelper.GetExceptionFromCOMException(exception);
}
finally
{
    searcher.Dispose();
    if (results != null)
    {
        results.Dispose();
    }
}