2012-10-02 39 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();