C# 多次调用SmtpClient发送函数时会出现内存泄漏

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

我不得不多次发送邮件,当使用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);
        }
    }
}
}

尝试以下操作:

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。虽然您没有添加任何视图,但我认为这不是您问题的实际解决方案。您如何确定内存泄漏?我观察到任务管理器中的大量内存正在堆积,而且一旦内存上升,就永远不会下降…可能会重复