我应该手动处理System.Net.Mail.MailMessage
吗?
MailMessage
实现IDisposable
所以我假设我应该处理它,但我找不到任何有人实际处理它的例子。
这样做是否正确?:
public void Send(MailMessage message)
{
using(var smtpClient = new SmtpClient(_host))
{
smtpClient.Send(message);
message.Dispose();
}
}
这似乎有点不对,因为我明确使用message.Dispose
。
答案 0 :(得分:2)
仅仅因为其他人不这样做并不能使其不妥善处理。由于它实现了IDisposable
,它可能会使用非托管资源,所以当你完成它时就把它丢弃。
using(var message = new MailMessage(pass arguments ...))
using(var smtpClient = new SmtpClient(_host))
{
smtpClient.Send(message);
}
source表明实际上有一些托管和非托管的东西需要处理。
这似乎有点不对,因为我明确地使用了
message.Dispose
。
是的,我同意,如果您不控制实例(在不受您控制或甚至不可见的代码中创建和使用),则调用message.Dispose()
似乎是错误的。因为那时你可能会在必须使用它时处理它,这可能是一个错误。