C# 如何修复';System.OutOfMemoryException';从Outlook导出邮件项目时?

C# 如何修复';System.OutOfMemoryException';从Outlook导出邮件项目时?,c#,outlook,C#,Outlook,我正在尝试构建一个Windows窗体应用程序,用于将Outlook的文件夹结构(包括邮件)导出到硬盘驱动器 private void ExportItems(MAPIFolder文件夹) { 目录.CreateDirectory(ExportPathField.Text+folder.FullFolderPath); Items=文件夹.Items; 如果(items.Count>0) { 对于(int counter=1;counter如果我没有弄错的话,请释放mailitem,但item仍在

我正在尝试构建一个Windows窗体应用程序,用于将Outlook的文件夹结构(包括邮件)导出到硬盘驱动器

private void ExportItems(MAPIFolder文件夹)
{
目录.CreateDirectory(ExportPathField.Text+folder.FullFolderPath);
Items=文件夹.Items;
如果(items.Count>0)
{

对于(int counter=1;counter如果我没有弄错的话,请释放
mailitem
,但
item
仍在引用它,因此您的
ReleaseComObject
无法按预期工作。您可以尝试使用
FinalReleaseComObject
。感谢您的提示,但不幸的是,我仍然收到了相同的错误。我刚才还看到您实际释放了它
item
无论如何都要放在switch case之后。另一种猜测可能是
items
+递归调用导致了您的错误。由于您不再需要它,您可以尝试在if子句之后释放
items
。但是如果是这种情况,您也可以在到达文件夹之前释放足够大的项g、 因此,您需要在开始之前检查文件夹内容是否过大,并相应地将其拆分为较小的部分。是否有方法将此
c#MailItem MailItem=item作为mailitm;mailitm.SaveAs(ExportPathField.Text+folder.FullFolderPath++“\”+mailitm.ReceivedTime.ToOADate()+“.msg”)缩短
没有“临时”变量是必要的?如果我没有弄错的话,您发布了
mailitm
,但是
item
仍在引用它,因此您的
ReleaseComObject
无法正常工作。您可以尝试使用
FinalReleaseComObject
。谢谢您的提示,但不幸的是,我仍然收到了相同的错误。A我刚才看到你实际上是在开关箱之后释放了
item
。另一个猜测可能是
items
+递归调用导致了你的错误。因为你不再需要它了,你可以尝试在if子句之后释放
items
。但是如果是这样的话,你也可以有足够大的项目在到达一个文件夹并发布之前,您需要在开始之前检查文件夹内容是否太大,并相应地将其分成更小的部分。是否有办法将此
c#MailItem mailitm=item作为mailitm;mailitm.SaveAs(ExportPathField.Text+folder.FullFolderPath++“\”+mailitm.ReceivedTime.ToOADate()+”.msg)缩短;
不需要“临时”变量吗?