相关疑难解决方法(0)

C#如何正确处理SmtpClient?

VS 2010代码分析报告如下:

警告4 CA2000:Microsoft.Reliability:在方法'Mailer.SendMessage()'中,对象'client'未沿所有异常路径放置.对所有对它的引用超出范围之前,在对象'client'上调用System.IDisposable.Dispose.

我的代码是:

public void SendMessage()
    {
        SmtpClient client = new SmtpClient();

        client.Send(Message);
        client.Dispose(); 
        DisposeAttachments(); 
    }
Run Code Online (Sandbox Code Playgroud)

我该如何正确处理客户?

更新:回答Jons问题,这里是dispose附件功能:

private void DisposeAttachments()
{
    foreach (Attachment attachment in Message.Attachments)
    {
        attachment.Dispose();
    }
    Message.Attachments.Dispose();
    Message = null; 
}
Run Code Online (Sandbox Code Playgroud)

最后更新全班上市(简称)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;

public class Mailer
    {
    public MailMessage Message
    {
        get;
        set;
    }

    public Mailer(MailMessage message)
    {
        this.Message = message; 
    }

    public void SendMessage()
    {
        using (SmtpClient client = new SmtpClient())
        { …
Run Code Online (Sandbox Code Playgroud)

c# .net-4.0

31
推荐指数
4
解决办法
3万
查看次数

标签 统计

.net-4.0 ×1

c# ×1