Показать сообщение отдельно
Старый 06.04.2012, 14:06   #1  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Загруженая dll на C# не выгружается
Есть dll написанная разработчиком оборудования. Эта dll содержит функции управления этим оборудованием. Сделана другая dll на c#, которая использует функции первой dll и представляет интерфейс в виде класса в Х++. Общая логика работы классическая: открытие устройства, вывод в устройство, закрытие устройства. Первый запуск из под axapta - все хорошо. Запуск производился из job. Второй запуск этого job вызывает ошибку - попытка обращения к защищенной памяти. Путем экспериментов, удалось выяснить, что при закрытии устройства очищаются данные и освобождает память в dll сделанной разработчиком оборудования, т.е. после закрытия, dll должна быть освобождена (freelibrary) и для повторного использования должна быть загружена еще раз. Казалось, что логика работы в Axapta будет следующая, job или форма обращаются к C# dll, выполняют необходимые действия и по окончании их вызывают закрытие устройства, завершаются сами (казалось и должны освободить C# dll). Но это не так, dll освобождается только после завершения сеанса Axapta. Попытка выполнить данные действия в отдельном thread не помогла, dll осталась загруженной после завершения thread. Есть ли способ освобождать dll после использования?