2012-11-27 163 views
0

MSDN entryPrincipalSearcher.FindByIdentitiy(),加里考德威尔指出(在社区内容底部),其从使用该方法的内存泄漏的结果,因为“底层实行使用DirectorySearcherSearchResultsCollection但不如文件所述,致电SearchResultsCollection。“当使用PrincipalSearcher.FindAll()PrincipalSearcher.FindOne()作为解决方法时,此泄漏也显然导致需要调用明确的Dispose()PrincipalSearcher.FindByIdentitiy()内存泄露

此条目是为.NET 3.5制作的,但未提及.NET 4.0及更高版本中列出的问题。任何人都可以确认这个问题是否已经修复?

回答

0

就让我们来看看与反射表明它已经固定: 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(); 
    } 
}