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.