Мне нужно запустить цикл foreach
в DirectorySearcher.FindAll()
и получить свойство displayname. Похоже, что с этим возникают проблемы с памятью (ссылка: утечка памяти при использовании DirectorySearcher.FindAll ()). Мой код выглядит следующим образом:
List<string> usersList = new List<string>();
string displayName = string.Empty;
try
{
using (DirectoryEntry directoryEntry = new DirectoryEntry(ldap, userName, password))
{
DirectorySearcher directorySearcher = new DirectorySearcher(directoryEntry);
directorySearcher.PageSize = 500; // ADD THIS LINE HERE !
string strFilter = "(&(objectCategory=User))";
directorySearcher.PropertiesToLoad.Add("displayname");//first name
directorySearcher.Filter = strFilter;
directorySearcher.CacheResults = false;
SearchResult result;
var resultOne = directorySearcher.FindOne();
using (var resultCol = directorySearcher.FindAll())
{
for (int counter = 0; counter < resultCol.Count; counter++)
{
result = resultCol[counter];
if (result.Properties.Contains("displayname"))
{
displayName = (String)result.Properties["displayname"][0];
usersList.Add(displayName);
}
}
}
}
}
Есть ли возможный способ зацикливания. Я также пытался вызвать метод Dispose()
, но он не работает. Любая помощь очень ценится.