C# 多次调用SmtpClient发送函数时会出现内存泄漏
我不得不多次发送邮件,当使用smtpclient类多次发送邮件时,内存急剧增加 我试过以下几件事。。。 -调用MailMessage、smtpclient的dispose方法 -手动调用GC.collect方法 什么都帮不了我C# 多次调用SmtpClient发送函数时会出现内存泄漏,c#,C#,我不得不多次发送邮件,当使用smtpclient类多次发送邮件时,内存急剧增加 我试过以下几件事。。。 -调用MailMessage、smtpclient的dispose方法 -手动调用GC.collect方法 什么都帮不了我 using System; using System.Net.Mail; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : For
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);
}
}
}
}尝试以下操作:
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);
smtpobj.ServicePoint.CloseConnectionGroup(
smtpobj.ServicePoint.ConnectionName);
}
}
catch(Exception ex)
{
string strReturn = ex.ToString();
MessageBox.Show(strReturn);
}
}
}
}
这是根据:您不处理MailMessage,但您应该这样做,因为它实现了IDisposable。虽然您没有添加任何视图,但我认为这不是您问题的实际解决方案。您如何确定内存泄漏?我观察到任务管理器中的大量内存正在堆积,而且一旦内存上升,就永远不会下降…可能会重复