C# Outlook邮件有时不会实际移动到其他文件夹

C# Outlook邮件有时不会实际移动到其他文件夹,c#,outlook,office-interop,C#,Outlook,Office Interop,下面是我将邮件从收件箱移动到另一个文件夹的代码 Microsoft.Office.Interop.Outlook.MAPIFolder inboxFolder = null; inboxFolder = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox); Microsoft.Office.Interop.Outlook.MAPIFolder destFolder = inbo

下面是我将邮件从收件箱移动到另一个文件夹的代码

Microsoft.Office.Interop.Outlook.MAPIFolder inboxFolder = null; 
inboxFolder = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
Microsoft.Office.Interop.Outlook.MAPIFolder destFolder = inboxFolder.Folders[somefoldername]; 
int countofmails = inboxFolder.Items.Count;           
for (int j = countofmails; j > 0; j--)
{
 Object _obj=inboxFolder.Items[j];
 if (_obj is MailItem)
  {
    MailItem mi = (MailItem)_obj;                       
    if (mi != null)
    {
     mi.SaveAs(somepath,OlSaveAsType.olMSG);
     mi.Move(destFolder);
     System.Runtime.InteropServices.Marshal.FinalReleaseComObject(mi);
    }
  }
}

这段代码运行正常,但一旦出现问题,即使代码运行成功,“收件箱”文件夹中仍然可以看到邮件项目。

触发此代码的事件是什么?是否有可能在您运行该代码时收到新邮件?@stuart Thomson-它被放置在一个每10分钟重复一次的调度表上。@DmitryStreblechenko-是的,这是可能的,但下次代码运行时会处理该邮件。”。(它被放在一个每10分钟重复一次的调度表上)。我认为可能是“System.Runtime.InteropServices.Marshal.FinalReleaseComObject(mi)”导致了这个问题。它可能在Com对象实际完成之前释放它。尝试让垃圾收集器处理它,看看是否有帮助。是什么事件触发了此代码?是否有可能在您运行该代码时收到一条新消息?@stuart Thomson-它被放置在一个每10分钟重复一次的调度上。@DmitryStreblechenko-是的,这是可能的,但下次代码运行时会处理该消息。(它被放在一个每10分钟重复一次的调度表上)。我认为可能是“System.Runtime.InteropServices.Marshal.FinalReleaseComObject(mi)”导致了这个问题。它可能在Com对象实际完成之前释放它。试着让垃圾收集器处理它,看看这是否有帮助。