【发布时间】:2014-07-10 13:54:41
【问题描述】:
这是我最近解决的一个问题,但我想知道是否有人可以帮我解决这个问题,因为我不完全了解到底发生了什么。我创建了一个简单的 smtp 电子邮件客户端,并将其包装在 using 语句中以处理它。在电子邮件中,我添加了一个我即时生成的 PDF 文件附件。发送电子邮件后,我想销毁 PDF,因为它暂时保存在机器本地以便发送电子邮件。当 File.Delete() 方法运行时,我会收到 IIS 工作进程正在锁定文件的错误。我不明白为什么,因为在我尝试删除文件之前我的客户已经被处理掉了。最后我发现在删除文件之前我也必须处理附件。所以,我的问题是为什么不处理客户也处理附件?不是客户的附件部分,因此一旦客户被处置,它应该被处置吗?示例代码如下:
try
{
using (SmtpClient SmtpMail = new SmtpClient(""))
{
MailMessage message = new MailMessage(From, To, Subject, Body);
message.IsBodyHtml = false;
message.Priority = MailPriority.Normal;
Attachment attachment = new Attachment(pdfString);
message.Attachments.Add(attachment);
SmtpMail.Send(message);
attachment.Dispose(); //Why is this needed?
}
}
【问题讨论】:
-
这样的问题最好在 StackOverflow 上提出。
-
您能解释一下原因吗?我问的不是代码问题的答案,而是代码背后的理论。
标签: c#