Использование ComWrapper
Ядро CAM-системы написано на языке с ручным освобождением памяти. В C# и других языках с Garbage Collector память освобождается автоматически.
Поэтому при взаимодействии .NET-расширений с ядром CAM-системы требуется механизм явного освобождения COM-объектов. Класс ComWrapper объединяет логику управления памятью этих объектов.
Использование ComWrapper решает две задачи:
- Доступ к COM-объекту из нескольких потоков;
- Корректное освобождение памяти после использования, чтобы ядро CAM-системы могло продолжить работу.
Примеры
Получение другого COM-объекта:
using var ncMakerCom = activeProjectCom.InvokeAndWrap(project => project.NCMaker);
Вызов метода COM-объекта:
applicationCom.Invoke(application =>
{
application.MainWorkMode = TMainWorkMode.mwmModel;
});
Передача ownership:
var curveCom2 = curveCom1.TransferOwnership();
Требование к .NET-расширениям
Использование ComWrapper обязательно для расширений на .NET.