@marc_s는 FindOne 메모리 누수 버그는 .NET 1.x에서에 있었고, .NET 2.0에서 해결 된 것을 제외하고, 권리입니다. 호출되지 않습니다
public SearchResult FindOne()
{
SearchResultCollection collection1 = this.FindAll(false);
foreach (SearchResult result1 in collection1)
{
collection1.Dispose();
return result1;
}
return null;
}
위의 코드 collection1.Dispose에서 : FindOne의 .NET 1.x의 구현이 내부적으로 findall은을 호출하고 항상 findall은에 의해 반환 된 SearchResultCollection을 처리하지 않기 때문에
그것은 무슨 일이 있었 컬렉션이 비어있는 경우 (결과가 없음)
the MSDN documentation for FindAll의 설명 섹션에 설명 된대로 메모리 누수가 발생합니다.
.NET 2.0에서 FindOne을 안전하게 사용할 수 있습니다. 또는 FindAll을 사용하는 경우 반환 된 SearchResultCollection을 처리해야하거나 동일한 메모리 누수가 있어야합니다 (예 :
).
public SearchResult MyFindOne()
{
using(SearchResultCollection results = this.FindAll(false))
{
if(results.Count > 0) return results[0];
return null;
}
}
출처
2009-07-16 06:18:19
Joe
감사합니다. – davidsleeps