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