首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处置MailMessage

处置MailMessage
EN

Stack Overflow用户
提问于 2018-01-15 11:35:06
回答 1查看 1.1K关注 0票数 1

我应该手动处理System.Net.Mail.MailMessage吗?

MailMessage实现了IDisposable,所以我假设我应该处理它,但是我找不到任何实际处理它的例子。

这样做对吗?:

代码语言:javascript
复制
public void Send(MailMessage message)
{
    using(var smtpClient = new SmtpClient(_host))
    {
       smtpClient.Send(message);
       message.Dispose();
    }
}

这似乎有点不对,因为我正在显式地使用message.Dispose

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-15 11:43:34

仅仅因为其他人不这样做,并不意味着不处理它是正确的。由于它实现了IDisposable,所以它可能使用非托管资源,所以当您完成它时就放弃它。

代码语言:javascript
复制
using(var message = new MailMessage(pass arguments ...))
using(var smtpClient = new SmtpClient(_host))
{
   smtpClient.Send(message);
}

来源显示,确实有一些托管和非托管的东西要处理。

这似乎有点不对,因为我正在显式地使用message.Dispose

是的,我同意,如果您不控制实例,调用message.Dispose()似乎是错误的(创建和使用的代码不受您的控制,甚至不可见)。因为这样就有可能在事后必须使用它时将其处理,这可能是一个错误。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48262182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档