Удаление файлов приводит к ошибке (процесс не может получить доступ к файлу..)
В настоящее время я отлаживаю свой код, потому что он дает мне ошибку:
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 и т. Д., Но как я могу использовать это в своем коде? Заранее спасибо.
2 ответа
Решение
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
using(FileStream stream = new FileStream("thepath"))
{
//do stuff with the file
stream .Close();
}
Теперь поток будет закрыт и утилизирован.