在邮件附件中发送后无法访问要写入的文件

Cannot access the File to write after sending it in Mail attachment

我有 C# console application 使用下面的代码在日志文本文件中写入它正在执行的步骤

logFilePath = logFilePath + "Log-" + System.DateTime.Today.ToString("dd-MM-yyyy") + "." + "txt";
logFileInfo = new FileInfo(logFilePath);
logDirInfo = new DirectoryInfo(logFileInfo.DirectoryName);
if (!logDirInfo.Exists) logDirInfo.Create();
if (!logFileInfo.Exists)
{
    fileStream = logFileInfo.Create();
}
else
{
    fileStream = new FileStream(logFilePath,FileMode.Append);
}
log = new StreamWriter(fileStream);
log.WriteLine("---------------" + DateTime.Now.ToString() + "--------------------------");
log.WriteLine(strLog);
log.WriteLine("---------------------------------------------------------------");
log.Close();

它工作正常,但是当发生异常时,我会将日志文本文件附加到邮件中,然后当我尝试再次调用方法时发送它,该方法在邮件与日志文本文件之后写入同一个日志文本文件附件 我得到异常 IOException: 进程无法访问文件 'file path' 因为它正被另一个进程使用

我试过 FileShare Option 和其他东西都没有成功

以下代码抛出异常

client.Send(mail);

client.Dispose();

LogWriter.WriteLog("######--Re-Start of the Process at -" + Convert.ToString(DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss")) + "--######"); //Exception thrown here
Console.WriteLine("######--Re-Start of the Process at -" + Convert.ToString(DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss")) + "--######");
BridgePage.GetData();
Console.WriteLine("######--Re-End of the Process at -" + Convert.ToString(DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss")) + "--######");
LogWriter.WriteLog("######--Re-End of the Process at -" + Convert.ToString(DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss")) + "--######");

根据 Panagiotis Kanavos 使用 FileInfo.AppendText 的评论,尝试了以下代码,但仍然存在相同的异常

logFilePath = logFilePath + "Log-" + System.DateTime.Today.ToString("dd-MM-yyyy") + "." + "txt";
logFileInfo = new FileInfo(logFilePath);

if (!logFileInfo.Exists)
{
   //Create a file to write to.
   using (StreamWriter logsw = logFileInfo.CreateText())
   {
       logsw.WriteLine("---------------" + DateTime.Now.ToString() + "--------------------------");
       logsw.WriteLine(strLog);
       logsw.WriteLine("---------------------------------------------------------------");
    }
 }
 else
 {
   using (StreamWriter logsw = logFileInfo.AppendText())
    {
       logsw.WriteLine("---------------" + DateTime.Now.ToString() + "--------------------------");
       logsw.WriteLine(strLog);
       logsw.WriteLine("---------------------------------------------------------------");
    }
  }

请帮忙

而不是 Disposing SmtpClient 我在发送邮件后释放了 MailMessage.Attachments 的附件

if (mail.Attachments != null)
{
    for (int i = mail.Attachments.Count - 1; i >= 0; i--)
    {
       mail.Attachments[i].Dispose();
    }
     mail.Attachments.Clear();
     mail.Attachments.Dispose();
 }
 mail.Dispose();
 mail = null;

成功了