【发布时间】:2013-04-10 02:26:59
【问题描述】:
我有以下邮件类:
public class Mail {
public List<MailFile> Files { get; set; }
public String Text { get; set; }
// Other properties
}
public class MailFile {
public Byte[] Data { get; set; }
public String Mime { get; set; }
public String Name { get; set; }
} // MailFile
Mail 包含一个文件列表,其中每个 MailFile 包含一个属性 Data,该属性包含 File 二进制数据。然后我使用 Mailer 发送电子邮件。
public class Mailer : IMailer {
private SmtpClient _client;
public Mailer() {
_client = new SmtpClient { UseDefaultCredentials = true };
} // Mailer
public void Send(Mail mail) {
using (MailMessage message = new MailMessage()) {
message.Text = mail.Text);
// Define other fields
foreach (MailFile file in mail.Files)
message.Attachments.Add(new Attachment(new MemoryStream(x.Data), x.Name, x.Mime)));
_client.Send(message);
};
} // Send
public void Dispose() {
Dispose(true);
} // Dispose
protected virtual void Dispose(Boolean disposing) {
if (disposing) {
if (_client != null)
_client.Dispose();
}
} // Dispose
} // Mailer
我将 MailMessage 包装在 using
- 但在这种情况下,我是否需要处理邮件文件?
- 我的 Mail 和 Mail 文件不是由 GC 管理和处置吗?
- 也许我应该将 Mail 设为一次性并丢弃其 MailFiles?
- 如果是,最好的方法是什么?
【问题讨论】:
-
如果你需要在 GC 到达之前调用
Dispose,你需要一个Dispose();如果您不关心何时接到电话(或者即使接到电话),那么您不需要Dispose()。 -
由于您已将它们包装在
using语句中,我认为您不需要Dispose。
标签: c#