1

我正在开发一个用于将电子邮件移动到文件夹的 Outlook 插件。工作正常,但看起来 MailItem 的移动方法很慢,需要 4-5 秒才能移动 10 封电子邮件,我正在使用类似的东西

for (int i = folder.Items.Count; i > 0; i--)
{
     Outlook.MailItem mi = (Outlook.MailItem)theRootFolder.Items[i];
     if (mi != null)
     {            
              mi.Move(destFolder);         
     }
4

1 回答 1

0

不要在单行代码中使用多个点:

 folder.Items.Count

打破属性和方法调用链,并在单独的代码行上声明每个调用。因此,您将能够立即释放底层 COM 对象。使用System.Runtime.InteropServices.Marshal.ReleaseComObject在您使用完 Outlook 对象后释放它。如果您的加载项尝试枚举存储在 Microsoft Exchange Server 上的集合中超过 256 个 Outlook 项目,这一点尤其重要。然后在 Visual Basic 中将变量设置为 Nothing(在 C# 中为 null)以释放对对象的引用。在 MSDN中的系统释放对象文章中阅读更多相关信息。

请注意,MoveMailItem 类的方法返回一个应该在之后释放的对象。

于 2015-08-12T14:50:43.313 回答