【发布时间】:2017-12-29 08:12:06
【问题描述】:
我正在从 db 获取详细信息并使用 FileHelper 将它们写入文件,将文件作为电子邮件的一部分附加,并在发送邮件后尝试删除文件。
var engine = new FileHelperEngine<DataModel>();
engine.WriteFile(filePath, data);
//After Mail is sent, deleting the file.
if (File.Exists(filePath))
{
File.Delete(filePath); //Error is thrown here
}
异常:进程无法访问文件 '..//somefilepath' 因为它正被另一个进程使用。
我必须在发送邮件后立即删除这些文件,让它们驻留在服务器上会占用服务器中的空间。
当这些文件被另一个进程持有时,如何删除这些文件?
编辑:感谢大家的回复。 出现此问题的原因是 Attachment 实例持有该文件并且不允许我删除该文件。
MailMessage mailobj= new MailMessage();
Attachment data = new Attachment(filePath);
mailobj.Attachments.Add(data);
//after sending mail, i disposed the data
data.Dispose();
【问题讨论】:
-
您不能删除正在使用的文件。 Windows 不允许。我建议您在每次新尝试之前多试几次。
-
邮件发送后 这会引发危险信号。您是否将该文件添加为指控,并且您是否在该邮件发送过程中使用 using 语句?请出示发送邮件的代码。
-
确保妥善处理所有物品。我在这里怀疑您的代码没有处理所有一次性物品。当您处理“数据”时,您已经将其添加到集合中,并且一旦您要求服务器对象发送邮件,它将打开该文件,而不是附件对象。
标签: c# file process filehelpers