outlook邮件项目未正确关闭

outlook邮件项目未正确关闭,outlook,mailitem,Outlook,Mailitem,我已成功地使用以下方法从c#代码打开了一个新的outlook邮件项目: using Outlook = Microsoft.Office.Interop.Outlook; Outlook.Application oApp; Outlook.Inspectors oInspects; Outlook._MailItem oMailItem; oApp = new Outlook.Application(); oInspects = oApp.Inspectors; oMailItem =

我已成功地使用以下方法从c#代码打开了一个新的outlook邮件项目:

using Outlook = Microsoft.Office.Interop.Outlook;


Outlook.Application oApp;
Outlook.Inspectors oInspects;
Outlook._MailItem  oMailItem;


oApp = new Outlook.Application();
oInspects = oApp.Inspectors;
oMailItem = (Microsoft.Office.Interop.Outlook._MailItem)oApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);

oMailItem.Display(true);
我的问题如下: 当我点击mailitem窗口角落的X以关闭它时,我收到一条消息,询问我是否要保存更改,这是确定的。但在选择“否”选项后,电子邮件窗口关闭,但另一个窗口似乎出现在它的正后方(变灰),我必须再次单击角落中的X来关闭它

如果我点击发送按钮发送电子邮件,也会发生同样的情况。原始窗口关闭,然后出现另一个完全相同的窗口(包含所有内容),但按钮变灰,我必须单击X才能关闭它

我尝试使用以下代码(以下行的任意组合)关闭窗口,但似乎没有任何效果:

oMailItem.Close(Microsoft.Office.Interop.Outlook.OlInspectorClose.olDiscard);
oMailItem.Delete();
Marshal.FinalReleaseComObject(oMailItem);
Marshal.ReleaseComObject(oApp);
如果有人知道如何解决这个问题,我将不胜感激。我绞尽脑汁寻找答案已经好几个小时了


提前感谢

尝试使用
oMailItem.Display(false)
改为“true”

尝试使用
oMailItem.Display(false)改为“true”

我已经用Outlook 2007+VS 2010 Express试用了您的代码。 您所面临的问题不会发生在我的环境中。 我尝试在启动代码时运行Outlook和不运行Outlook

“using”语句是源代码顶部using部分的一部分,而不是例程中的“using”变量引用


oMailTime.Display(true)中的“true”必须保持为true才能获得模式窗口。

我已在Outlook 2007+VS 2010 Express中试用了您的代码。 您所面临的问题不会发生在我的环境中。 我尝试在启动代码时运行Outlook和不运行Outlook

“using”语句是源代码顶部using部分的一部分,而不是例程中的“using”变量引用


oMailTime.Display(true)中的“true”必须保持为true才能获得模式窗口。

即使这已经4年了,下面是我解决问题的方法:

while (System.Runtime.InteropServices.Marshal.ReleaseComObject(mailItem) != 0) { }
mailItem = null;
GC.Collect();
GC.WaitForPendingFinalizers();

尽管这已经4岁了,我还是这样解决了这个问题:

while (System.Runtime.InteropServices.Marshal.ReleaseComObject(mailItem) != 0) { }
mailItem = null;
GC.Collect();
GC.WaitForPendingFinalizers();