C# Outlook加载项从Outlook接收项目需要很长时间

C# Outlook加载项从Outlook接收项目需要很长时间,c#,outlook,office-interop,outlook-addin,C#,Outlook,Office Interop,Outlook Addin,我们有两台配置相同的机器,两台机器都有outlook 2010。 两个Outlook都有相同的联系人列表(第一个和第二个上有2769个联系人) 在第一台机器上,接收所有联系人大约需要12.5分钟。 2017年6月8日上午10:33:02——接收联系人 2017年6月8日上午10:45:34--在Outlook中找到2769个联系人 在第二台机器上,接收所有触点大约需要45秒 2017年6月8日上午10:54:46——接收联系人 2017年6月8日上午10:55:33——在Outlook中找到27

我们有两台配置相同的机器,两台机器都有outlook 2010。 两个Outlook都有相同的联系人列表(第一个和第二个上有2769个联系人)

在第一台机器上,接收所有联系人大约需要12.5分钟。

2017年6月8日上午10:33:02——接收联系人
2017年6月8日上午10:45:34--在Outlook中找到2769个联系人 在第二台机器上,接收所有触点大约需要45秒

2017年6月8日上午10:54:46——接收联系人
2017年6月8日上午10:55:33——在Outlook中找到2769个联系人

从outlook中提取联系人的代码如下所示:

Items items1 = _contactFolder.Items;
ArrayList list1 = new ArrayList();
for (int num1 = 1; num1 <= items1.Count; num1++)
{
    ContactItem item1 = null;
    try
    {
        item1 = (ContactItem) items1.Item(num1);
    }
    catch
    {
        goto Label_01;
    }
    if (item1.MessageClass.StartsWith("IPM.Contact"))
    {
        Contact contact1 = new Contact();
        contact1.Account = item1.Account;
        contact1.Anniversary = item1.Anniversary;
        contact1.AssistantName = item1.AssistantName;
        contact1.AssistantTelephoneNumber = item1.AssistantTelephoneNumber;
        ......
        contact1.LastModificationTime = item1.LastModificationTime;
        contact1.EntryID = item1.EntryID;
        list1.Add(contact1);
    }
    Label_01:;              
    Utils.FreeComObject(item1);
    item1 = null;
}
Utils.FreeComObject(items1);
items1 = null;
Items items1=\u contactFolder.Items;
ArrayList list1=新的ArrayList();

对于(int num1=1;num1)您是否验证了代码的哪个特定部分具有增加的延迟?(A finally{}将消除对goto标签btw的需要)@Alex K,我尚未验证它。我发现第一台机器的PST文件大小较大(33 Gb),而第二台机器的PST文件大小也不小(12 Gb)但第二台outlook运行得很快。我想压缩第一台机器的PST文件,并检查它是否有用。如果没有,将测量时间。