从文件夹中删除文本文件时出错

时间:2014-07-25 13:27:16

标签: c# file

我正在开发一个C#应用程序,它创建一个包含一些数据的文本文件,将其保存在一个文件夹中,将其发送到电子邮件地址列表并从该位置删除该文件但是当我调用File.Delete时()它抛出一个异常,说文件无法被访问,因为它被另一个进程使用。那是因为该文件正被电子邮件服务使用并试图删除所以,这是一个明显的例外但是当我尝试在两个函数调用之间的延迟时,它仍然让我异常

  _dailyBargainReport.sendRejectionReport(servername, fromAddress, password, sub, bodyofmail, rejectionReportPath);

             Task.Delay(20000);
            File.Delete(rejectionReportPath);

2 个答案:

答案 0 :(得分:1)

我认为您的问题是您没有在Dispose上调用FileStream方法

using (FileStream f = File.Open("example.txt", FileMode.Open, FileAccess.Read, FileShare.None))
{
    //do your operations
}
File.Delete(rejectionReportPath);

使用statment始终调用Dispose,因此等同于

try{
   FileStream f = File.Open("example.txt", FileMode.Open, FileAccess.Read, FileShare.None);
}
finally{
   ((IDisposable)f).Dispose();
}
//delete file here

<强>更新

尝试以这种方式等待功能

Task.Factory.StartNew(() =>
    {
        _dailyBargainReport.sendRejectionReport(servername, fromAddress, password, sub, bodyofmail, rejectionReportPath);
    })
    .ContinueWith(() =>
    {
        File.Delete(rejectionReportPath);
    }).Wait();

通过这种方式,您可以确保在Delete结束后调用sendRejectionReport函数 记住在Dispose函数

中调用sendRejectionReport

答案 1 :(得分:0)

创建文件时,您可以使用要在进程关闭时删除的标志创建该文件。请参阅:https://stackoverflow.com/a/400433/3846861