【发布时间】:2014-07-25 13:27:15
【问题描述】:
我正在开发一个 C# 应用程序,它创建一个包含一些数据的文本文件,将其保存在文件夹中,将其发送到电子邮件地址列表并从该位置删除文件,但是当我调用 File.Delete () 它抛出一个异常,说文件不能被访问,因为它正在被另一个进程使用。那是因为电子邮件服务正在使用该文件并试图删除它,这是一个明显的异常,但是当我尝试在两个函数调用之间进行延迟时,它仍然给我一个异常
_dailyBargainReport.sendRejectionReport(servername, fromAddress, password, sub, bodyofmail, rejectionReportPath);
Task.Delay(20000);
File.Delete(rejectionReportPath);
【问题讨论】:
-
我将假设
sendRejectionReport中没有 using 语句。实现IDisposable的所有内容都需要包装在 using 语句中。 -
.sendRejectionReport看起来像什么?是异步的吗? -
请显示您用于创建文件的代码
-
附带说明,您的
Task.Delay没有帮助,因为您没有在等待任务。要么这样做await Task.Delay(2000),要么干脆阻塞线程Thread.Sleep(2000) -
这个无所不在的 sendRejectionReport 方法是什么?如果您不调用该方法,文件删除是否仍然失败(即,问题真的与调用 sendRejectionReport 相关,还是可能发生其他事情)?