15.10.2021, 22:23 | #1 |
Участник
|
DAX2012 Отправка писем с прикреплениями
Добрый вечер!
Был реализован функционал для формирования отчета в пакетном режиме (COM('Excel.Application')) При попытке отправки письма с прикреплением построенного отчета возникает ошибка: Метод "addAttachment" в COM-объекте класса "CDO.Message" возвратил код ошибки 0x80070020 (<неизвестно>), который означает: Процесс не может получить доступ к файлу, так как этот файл занят другим процессом. При этом тот же самый код на клиенте отрабатывает без проблем. Для отправки использую SysMailer. Ошибка возникает в методе sendMail. З.ы. не знаю причуды ли это CIL или в этом кроется суть проблемы, но первый раз письмо отправилось без ошибок. Подскажите, что может быть не так? |
|
15.10.2021, 23:21 | #2 |
Участник
|
Excel не сразу отпускает объект.
Если используете работу с Excel через .Net то после закрытия файла и обнуления переменных по работе с Excel попробуйте принудительно вызвать сборку мусора (примеры на форуме были) или покопать в сторону разных dispose методов. |
|
15.10.2021, 23:29 | #3 |
Участник
|
У меня были предположения, что проблема во времени закрытия. Просто не понятно почему тогда от клиента все работает (сервер дольше взаимодействует с Excel?), а также если вместо отправки письма вызвать удаление файла, то никаких ошибок не возникает.
|
|
16.10.2021, 00:06 | #4 |
Участник
|
Благодарю за наводку.
В итоге конструкция: new InteropPermission(InteropKind::ClrInterop).assert(); ... CodeAccessPermission::revertAssert(); System.GC::Collect(); System.GC::WaitForPendingFinalizers(); помогла. |
|