我已經使用C#創建了一個簡單的Outlook 2007加載項,它通過選擇消息循環並檢查其附件。Outlook 2007加載項內存泄漏?
我在一組〜25,000選定的消息上運行此加載項。不過,我立即注意到Outlook的內存使用情況(通過perfmon看到)正在上升。在逐行調試模式下運行加載項後,顯然在訪問Message's Attachments集合的第一個實例時將內存分配給Outlook。這個內存是從來沒有返回給系統; Outlook在大約1GB(大約12,000條消息)之後繼續佔用內存,於是我收到「內存不足或系統資源」錯誤。有任何想法嗎?
下面是部分代碼:
for(int i = 1; i <= objSelectedItems.Count; i++)
{
Object objMsg = objSelectedItems[i];
//Only process if Item is a Message
if (objMsg is Outlook.MailItem)
{
Outlook.MailItem Msg = objMsg as Outlook.MailItem;
//The culprit: this allocates memory to Outlook which I can't get back
Outlook.Attachments objAttachments = Msg.Attachments;
//Perform some actual work here//
//Clean up Outlook objects; does not appear to give memory back to system
Msg.Close(Microsoft.Office.Interop.Outlook.OlInspectorClose.olDiscard);
Marshal.ReleaseComObject(objAttachments);
Marshal.ReleaseComObject(Msg);
}
Marshal.ReleaseComObject(objMsg);
GC.Collect();
GC.WaitForPendingFinalizers();
}
該修復程序是否解決了您的問題?也許你需要釋放每一個附件(見我的更新)? – 2009-10-15 22:00:49