我正在开发一个用于将电子邮件移动到文件夹的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);
}
答案 0 :(得分:0)
不要在单行代码中使用多个点:
folder.Items.Count
打破属性和方法调用链,并在单独的代码行上声明每个调用。因此,您将能够立即释放基础COM对象。完成使用后,使用System.Runtime.InteropServices.Marshal.ReleaseComObject释放Outlook对象。如果您的加载项尝试枚举存储在Microsoft Exchange Server上的集合中超过256个Outlook项目,这一点尤为重要。然后在Visual Basic中将变量设置为Nothing(C#中为null)以释放对该对象的引用。有关详细信息,请参阅MSDN中的Systematically Releasing Objects文章。
请注意,MailItem类的Move
方法返回一个应该在之后释放的对象。