我应该手动处理System.Net.Mail.MailMessage吗?
MailMessage实现了IDisposable,所以我假设我应该处理它,但是我找不到任何实际处理它的例子。
这样做对吗?:
public void Send(MailMessage message)
{
using(var smtpClient = new SmtpClient(_host))
{
smtpClient.Send(message);
message.Dispose();
}
}这似乎有点不对,因为我正在显式地使用message.Dispose。
发布于 2018-01-15 11:43:34
仅仅因为其他人不这样做,并不意味着不处理它是正确的。由于它实现了IDisposable,所以它可能使用非托管资源,所以当您完成它时就放弃它。
using(var message = new MailMessage(pass arguments ...))
using(var smtpClient = new SmtpClient(_host))
{
smtpClient.Send(message);
}来源显示,确实有一些托管和非托管的东西要处理。
这似乎有点不对,因为我正在显式地使用
message.Dispose。
是的,我同意,如果您不控制实例,调用message.Dispose()似乎是错误的(创建和使用的代码不受您的控制,甚至不可见)。因为这样就有可能在事后必须使用它时将其处理,这可能是一个错误。
https://stackoverflow.com/questions/48262182
复制相似问题