Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Note
Este artigo é específico do .NET Framework. Ele não se aplica a implementações mais recentes do .NET, incluindo o .NET 6 e versões posteriores.
O gcManagedToUnmanaged assistente de depuração gerido (MDA) provoca uma recolha de lixo sempre que um thread transita de código gerido para código não gerido.
Sintomas
Um componente de utilizador não gerido lança uma violação de acesso ao tentar usar um objeto gerido que foi exposto ao COM. O objeto COM parece ter sido libertado. A violação de acesso é não determinística.
Motivo
Se um componente não gerido não estiver a contar corretamente um objeto COM gerido, então o runtime pode recolher um objeto gerido exposto ao COM quando o componente não gerido ainda mantém referência ao objeto. As chamadas Release de tempo de execução durante as recolhas de lixo, por isso, se o componente utilizador usar o objeto antes da recolha de lixo ocorrer, este ainda não terá sido recolhido. Esta é a origem do não-determinismo.
Resolução
Ativar este assistente reduz o tempo entre o momento em que o objeto é elegível para recolha e Release é chamado, ajudando a identificar qual componente não gerido tenta primeiro aceder ao objeto recolhido.
Efeito no tempo de execução
Causa uma recolha de lixo sempre que um thread transita de código gerido para não gerido.
Output
Este MDA não produz saída.
Configuração
<mdaConfig>
<assistants>
<gcManagedToUnmanaged/>
</assistants>
</mdaConfig>