Способы избегания исключений во время завершения работы среды CLR при использовании COM-объектов, построенных с помощью /clr
После выхода среды CLR в режим завершения работы собственные функции имеют ограниченный доступ к службам CLR. При попытке вызова выпуска com-объекта, скомпилированного с помощью /clr, среда CLR переходит в машинный код, а затем переходит в управляемый код для обслуживания вызова IUnknown::Release (который определен в управляемом коде). Среда CLR предотвращает обратный вызов в управляемый код, так как он находится в режиме завершения работы.
Чтобы устранить эту проблему, убедитесь, что деструкторы, вызываемые из методов выпуска, содержат только машинный код.