【发布时间】:2018-03-29 02:34:42
【问题描述】:
我必须多次发送邮件,当使用 smtpclient 类多次发送邮件时,内存急剧增加......
我已经尝试过以下事情...... - 调用 MailMessage、smtpclient 的 dispose 方法 - 手动调用 GC.collect 方法 没有任何帮助...
using System;
using System.Net.Mail;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
MailMessage mail = new MailMessage();
using (var smtpobj = new SmtpClient("smtp.gmail.com"))
{
mail.To.Add("xxx@gmail.com");
mail.From = new MailAddress("yyy@gmail.com");
mail.Subject = "subject - .net app";
mail.Body = "body";
smtpobj.Port = 587;
smtpobj.Credentials = new System.Net.NetworkCredential("yyy@gmail.com", "xyz");
smtpobj.EnableSsl = true;
smtpobj.Send(mail);
}
}
catch(Exception ex)
{
string strReturn = ex.ToString();
MessageBox.Show(strReturn);
}
}
}
}
【问题讨论】:
-
你不会处理
MailMessage,但你应该处理,因为它实现了IDisposable。虽然您没有添加任何视图,所以我认为这不是您问题的实际解决方案。 -
你如何确定你有内存泄漏?
-
我观察到任务管理器中的内存越来越大,而且内存一旦增加就永远不会减少......
标签: c#