2012-10-02 37 views
2

我已经设法成功地使用从C#代码打开一个新的Outlook邮件项目如下:前景的MailItem没有正确关闭

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); 

我的问题如下: 当我在角落点击X mailitem窗口为了关闭它,我收到一条消息,询问我是否想保存更改,这没关系。但在选择“否”后,电子邮件窗口关闭,但另一个似乎出现在它后面(变灰),我必须再次点击拐角处的X以关闭它。

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

我试图关闭窗口使用下面的代码,但没有(以下线的任意组合),似乎工作:

oMailItem.Close(Microsoft.Office.Interop.Outlook.OlInspectorClose.olDiscard); 
oMailItem.Delete(); 
Marshal.FinalReleaseComObject(oMailItem); 
Marshal.ReleaseComObject(oApp); 

如果任何人有关于如何解决这一点,我将不胜感激的想法。我一直在破坏我的头寻找一个答案

感谢小时提前

回答

1

尝试使用oMailItem.Display(false);而不是“真”

0

我已经试过你的代码与Outlook 2007 + VS 2010速成。 您所面临的问题不会发生在我的环境中。 我试过在启动代码时没有运行Outlook。

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

oMailTime.Display(true)中的'true'必须保持真实以获取模态窗口。

0

尽管这是4岁,这是我如何解决了这个问题:

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