在PrincipalSearcher.FindByIdentitiy()
DirectorySearcher
中,Gary Caldwell指出(在社区内容的底部)使用此方法导致内存泄漏,因为“底层实现使用SearchResultsCollection
和SearchResultsCollection
但不会在文件描述的Dispose()
上调用dispose。“当使用PrincipalSearcher.FindAll()
或PrincipalSearcher.FindOne()
作为解决方法时,此泄漏也显然需要调用明确的{{1}}。
此条目是针对.NET 3.5制作的,但没有提及.NET 4.0及更高版本的问题。任何人都可以确认这个问题是否已经解决?
答案 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();
}
}