Evitando exceções no desligamento do CLR durante o consumo dos objetos COM criados com /clr

Depois que o CLR (Common Language Runtime) entra no modo de desligamento, as funções nativas têm acesso limitado aos serviços do CLR. Ao tentar chamar Release em um objeto COM compilado com /clr, o CLR faz a transição para o código nativo e, em seguida, faz a transição de volta para o código gerenciado para atender à chamada IUnknown::Release (que é definida no código gerenciado). O CLR impede que a chamada volte ao código gerenciado, pois ele está no modo de desligamento.

Para resolver isso, verifique se os destruidores chamados dos métodos release contêm apenas código nativo.

Confira também

Assemblies mistos (nativos e gerenciados)