您的位置:首页 > 其它

优化.NET访问Active Directory的性能

2008-11-18 23:45 225 查看
从Active Directory获取大量对象时应特别注意,一不小心,就会掉入性能瓶颈甚至引起内存泄漏。本文提供了一个关于.NET访问Active Directory的优化例子。

1.获取对象的属性值 DirectoryEntry.Properties

获取一个DirectoryEntry对象后,我们就开始检索它的属性值;习惯了用foreach的朋友一般会这样写:

Code
private ArrayList InnerList
{
get
{
if (this.innerList == null)
{
this.innerList = new ArrayList();
IEnumerator enumerator = new ResultsEnumerator(this, this.rootEntry.GetUsername(), this.rootEntry.GetPassword(), this.rootEntry.AuthenticationType);
while (enumerator.MoveNext())
{
this.innerList.Add(enumerator.Current);
}
}
return this.innerList;
}
}

而foreach是直接调用迭代器创建和返回一个SearchResult对象,避免了装箱与拆箱的过程。

应严重注意的是:SearchResultCollection是未托管资源,而且会占用大量的内存,需要获取大量对象的属性时,推荐使用集合来保存所需的属性值,完成之后立即调用SearchResultCollection.Dispose()来对它进行释放,否则,会导致内存泄露。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: