2012-09-27 53 views
1

我正在開發一個EmailService以讀取郵件表(Sql)的新郵件。這是用C#和.NET 4.0編寫的Windows服務。每個電子郵件記錄的郵件大小約爲12kb ...在發送每封電子郵件後,我的服務會調用MailMessage.Disposed()方法並將SmtpClient設置爲null。但是我的服務內存不斷增加,並且不會回到啓動的服務(大約需要7mb系統內存),即使沒有新的電子郵件被讀取。它往往consumses 70MB - 120MB系統內存,這是如此怪異:(System.Net.Mail.MailMessage發送後不釋放memeory

你有任何解決方案,以減少內存的情況下,我上面

謝謝你,最好的問候,

+0

你確定問題不在其他地方嗎?註釋掉髮送消息的代碼並查看它是否仍然泄漏。或者,更好的是,使用memroy分析器。 – SLaks

+0

我一直在使用ANTS內存分析器來跟蹤內存,並注意到內存增加的原因是關於MailMessage沒有處理......當我沒有調用sendMail方法時。我推測讀新的100000封郵件,一切都很好。所以,我打賭MailMessage是一個問題 –

回答

0

我有?在此之前,在系統資源並沒有真正釋放,直到.exe文件被關閉(早在2.0天,一些windows窗體編程)看到

+0

這不是一個有用的答案,特別是因爲WinForms與System.Net.Mail沒有任何關係。 – SLaks

0

您應該使用usingSmtpClientMailMessage對象:

using(SmtpClient client = new SmtpClient("ipaddress")){ 
using(MailMessage message = new MailMessage()){ 

//Do something to fill the message... 

client.Send(message); 

} 

} 
相關問題