Я использую EXCEL interop для генерации Excel, а затем прикрепляю его как вложение к почте, а затем отправляю почту. После отправки почты я хочу удалить созданный файл. При удалении выдает ошибку:
this file cannot be deleted as it is is used by another process
Я искал на SO
и других сайтах и нашел интересные факты о COM-компонентах.
ссылка: - Как правильно очистить объекты взаимодействия Excel?
если я не прикрепляю его как вложение, то файл удаляется. Перед удалением я удаляю все ссылки на COM.но, когда я использую его в качестве вложений, выдается ошибка:
мой код выглядит так:
workbook.SaveAs(root + statics + ".xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);
// Garbage collecting
// Clean up references to all COM objects
// As per above, you're just using a Workbook and Excel Application instance, so release them:
GC.Collect();
GC.WaitForPendingFinalizers();
Marshal.FinalReleaseComObject(m_objRange);
Marshal.FinalReleaseComObject(worksheet);
workbook.Close(false, Type.Missing, Type.Missing);
Marshal.FinalReleaseComObject(workbook);
app.Quit();
Marshal.FinalReleaseComObject(app);
MailMessage mm = new MailMessage("def@gmail.com", "xyz@gmail.com", "TestMsg", "Hi");
SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
client.Credentials = CredentialCache.DefaultNetworkCredentials;
//Commenting Below two lines works fine ....!!!!!!!!!....WHY..???
//Attachment data = new Attachment(root + statics + ".xls");
//mm.Attachments.Add(data);
client.Send(mm);
File.Delete(root + statics + ".xls");
как удалить ссылки после прикрепления его к почте.
Спасибо