2

エラーが発生するため、現在コードをデバッグしています。

The process cannot access the file because it is being used by another process.

そして、このコード行でエラーが発生すると思います

foreach (var filename in filenames)
{
    var file = Path.Combine(filePath, filename);
    mail.Attachments.Add(new Attachment(file));
}

// Send Mail
smtpServer.Send(mail);

DeleteFiles();

この方法でメール送信時にフォルダ内のファイルを削除したい

private void DeleteFiles()
{
    string filePath = Server.MapPath("~/Content/attachments");
    Array.ForEach(Directory.GetFiles(filePath), System.IO.File.Delete);
}

閉鎖/廃棄について読みましたか?FileStream などですが、コードでそれを使用するにはどうすればよいですか? 前もって感謝します。

4

2 に答える 2

4

mail.dispose();ファイルを削除する前に、メールを破棄する必要があります。これにより、ファイルのロック解除されます。

foreach (var filename in filenames)
{
    var file = Path.Combine(filePath, filename);
    mail.Attachments.Add(new Attachment(file));
}

// Send Mail
smtpServer.Send(mail);
mail.Dispose();
DeleteFiles();

https://msdn.microsoft.com/en-us/library/0w54a951(v=vs.110).aspx

于 2015-09-05T04:03:22.553 に答える
1
using(FileStream stream = new FileStream("thepath"))
{
      //do stuff with the file
      stream .Close();
}

これで、ストリームが閉じられ、破棄されます。

于 2015-09-05T03:16:27.507 に答える