I have a Web Method
that is querying Outlook to grab all the distribution lists from the Global Address List
.
This is grabbing over 4,000 distribution lists, which is exactly what I want it to do, but when it goes into the loop to pass the 4,000 lists into my List
it takes over 3 minutes for it to finish the for loop. Can anyone see anything that is out of the ordinary and have an answer of why this may be happening?
Here is my code:
public class DistributionListDetails
{
public int DistributionListId { get; set; }
public string DistributionListEmail { get; set; }
}
List<DistributionListDetails> distributionLists = new List<DistributionListDetails>();
int val = 0;
//create Outlook application.
Outlook.Application oApp = new Outlook.Application();
//get Mapi NameSpace and Logon.
Outlook.NameSpace oNS = oApp.GetNamespace("mapi");
//get Global Address List.
Outlook.AddressLists oDLs = oNS.AddressLists;
Outlook.AddressList oGal = oDLs["Global Address List"];
//get a specific distribution list.
string sDL = "TestDL";
Outlook.AddressEntries oEntries = oGal.AddressEntries;
Outlook.AddressEntry oDL = oEntries[sDL];
if (oDL.Manager != null)
distributionLists.Add(new DistributionListDetails
{
DistributionListId = val,
DistributionListEmail = oDL.Manager.ToString()
});
//get all of the members of the distribution list.
oEntries = oDL.Members;
Outlook.AddressEntry oEntry = default(Outlook.AddressEntry);
int i = 0;
for (i = 1; i <= oGal.AddressEntries.Count && i <= 10; i++)
{
oEntry = oGal.AddressEntries[i];
distributionLists.Add(new DistributionListDetails
{
DistributionListId = val,
DistributionListEmail = oEntry.Name
});
}
NOTE: I am binding the returned list from the loop to a dropdown via AJAX.