06.04.2012, 14:06 | #1 |
Участник
|
Загруженая 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 после использования?
|
|